如何在PHP正则表达式中匹配空格字符?

我是说像"加文·舒尔茨"这两个词之间的空格。我使用正则表达式,以确保我只允许字母,数字和空格。但是我不知道怎么找到地方。这是我现在拥有的:

$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);

当前回答

您还可以使用\b作为单词边界。对于名字,我会使用这样的东西:

[^\b]+\b[^\b]+(\b|$)

在Perl示例中修改为一个正则表达式

if( $fullname =~ /([^\b]+)\b[^\b]+([^\b]+)(\b|$)/ ) {
 $first_name = $1;
 $last_name = $2;
}

根据你想要的内容再次编辑:

$new_tag = preg_replace("/[\s\t]/","",$tag);

其他回答

我正在尝试[[:space:]]在一个实例中,它看起来像博客在WordPress中使用非标准的空格字符。看起来它会起作用。

我使用正则表达式来确保 只允许字母,数字和空格

然后,它就像在你已经得到的东西上添加一个空格一样简单:

$newtag = preg_replace("/[^a-zA-Z0-9 ]/", "", $tag);

(注意,我删除了s|,这似乎是无意的?当然s是多余的;你可以恢复|如果你需要它)

如果您特别想要*a*空格,就像只在一个空格中一样,那么您将需要一个比这个更复杂的表达式,并且可能需要考虑一个单独的非正则表达式逻辑部分。

像这样使用它来留出一个单独的空间。

$newtag = preg_replace("/[^a-zA-Z0-9\s]/", "", $tag)

要精确匹配空格字符,可以使用八进制值\040(显示为八进制的Unicode字符)或十六进制值\x20(显示为十六进制的Unicode字符)。

下面是regex语法参考:https://www.regular-expressions.info/nonprint.html。

这种匹配轮胎更好,因为不是所有供应商都使用相同的尺寸格式。我和许多供应商打交道,他们都在做不同格式的尺寸。这是我现在的表达式

/^[\d][\d](?:\d)?(?:\-|\/|\s)?([?:\d]+)?(?:\.)?(?:\d)?(?:\d)?(?:R|-|\s)?[1-3]([?:[\d]+)?(?:\.)?([?:\d])?(?:\s|-)/img

会抓住所有 35 - 12.50 - 22海达(AA) 35-12-22海达(AA) 35/35R20 35/35r20 因此,ui是一个测试 rrrrr awdg 3345588 225-45-17 ACCELERA (AC) 195 50 16凯利 1955016凯利 CP671” 158年鹿弹 165 - 40 - 16 -阿基里斯 11 - 24.5 - 16 -里昂lla08 11 - 24.5 -里昂d37 11 - 22.5 - 14 lld37——玲珑 11 - 22.5 - happyroad (AA)