如何在PHP正则表达式中匹配空格字符?
我指的是“加文·舒尔茨”,两个单词之间的空格。我使用正则表达式,以确保我只允许字母,数字和空格。但是我不知道怎么找到地方。这是我现在拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
在Perl中,开关是\s(空格)。
\s
您还可以使用\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);
在我看来,在这种情况下使用REGEX是多余的。为什么不直接大小写敏感来找到空格字符。此外,正则表达式中的空格字符没有什么特别之处,您应该能够像搜索任何其他字符一样搜索它。也就是说,除非您禁用了模式空白,在本例中几乎不需要这样做。
为了精确匹配空格字符,可以使用八进制值\040 (显示为八进制的Unicode字符)或十六进制值\x20 (Unicode字符显示为十六进制)。
\040
\x20
下面是正则表达式语法引用:https://www.regular-expressions.info/nonprint.html。
如果你在寻找一个空格,那将是" "(一个空格)。
" "
如果你正在寻找一个或多个,它是" *"(即两个空格和星号)或" +"(一个空格和一个加号)。
" *"
" +"
如果你在寻找通用的空格,可以使用"[ X]"或"[ X][ X]*"或"[ X]+",其中X是物理制表符(在所有这些例子中,每个字符前面都有一个空格)。
"[ X]"
"[ X][ X]*"
"[ X]+"
X
这些将在我所见过的每一个*正则表达式引擎中工作(其中一些甚至没有一个或多个"+"字符,额)。
"+"
如果你知道你将使用一个更现代的正则表达式引擎,"\s"及其变体是正确的选择。此外,我相信单词边界也可以匹配行首和行尾,这在寻找没有前后空格的单词时很重要。
"\s"
特别是对于PHP, 这个页面可能会有所帮助。
从您的编辑中,似乎您想要删除所有无效字符。开头是(注意正则表达式内的空格):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag); # ^ space here
如果你还想要确保每个单词之间只有一个空格,并且在开头或结尾没有空格,这有点复杂(可能是另一个问题),但基本思想是:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space $newtag = preg_replace ("/^ /", "", $tag); # remove space from start $newtag = preg_replace ("/ $/", "", $tag); # and end
我使用一个正则表达式,以确保我 只允许字母,数字和空格
然后,它就像在你已经得到的东西上添加一个空格一样简单:
$newtag = preg_replace("/[^a-zA-Z0-9 ]/", "", $tag);
(注意,我删除了s|,这似乎是无意的?当然s是多余的;你可以恢复|,如果你需要它)
s|
s
|
如果你特别想要*a*空格,比如在只有中是一个空格,你将需要一个比这个更复杂的表达式,并且可能需要考虑一个单独的非正则表达式逻辑。
我正在尝试[[:space:]]在一个实例中,它看起来像博客在WordPress中使用非标准的空格字符。看起来它会起作用。
像这样使用它来留出一个单独的空间。
$newtag = preg_replace("/[^a-zA-Z0-9\s]/", "", $tag)
下面是一个关于正则表达式中空白的小备忘单:
[[:blank:]]
只能使用空格或制表符,不能使用换行符。这和写[ \t]是一样的。
[ \t]
[[:space:]]
[[:space:]]和\s是相同的。它们都将匹配任何空白字符、换行符、制表符等…
\v
匹配垂直的Unicode空白。
\h
匹配水平空白,包括Unicode字符。它还将匹配空格,制表符,非换行/数学/表意空格。
x
忽略所有空格。请记住,这是一个标志,所以您将把它添加到正则表达式的末尾 像/hello/gmx。该标志将忽略正则表达式中的空格
/hello/gmx
例如,如果你写了一个像/hello world/x这样的表达式,它将匹配helloworld,但不匹配hello world。扩展标志还允许在正则表达式中添加注释。
/hello world/x
helloworld
hello world
/helloworld #hello this is a comment/
如果需要使用空格,可以使用\ 来匹配空格。
\
这种匹配轮胎更好,因为不是所有供应商都使用相同的尺寸格式。我和许多供应商打交道,他们都在做不同格式的尺寸。这是我现在的表达式
/^[\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 accela [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) < / p >