我需要匹配PHP正则表达式中的空格字符.有人有任何想法吗?
我的意思是"gavin schulz",这两个词之间的空间.我使用正则表达式来确保我只允许字母,数字和空格.但我不确定如何找到空间.这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
paxdiablo.. 342
如果你正在寻找一个空间,那就是" "
(一个空间).
如果你正在寻找一个或多个,那就是" *"
(那是两个空格和一个星号)或" +"
(一个空格和一个加号).
如果您正在寻找共同的间距,使用"[ X]"
或"[ X][ X]*"
或"[ X]+"
其中X
是物理制表符(每个由一个单一的空间在所有这些例子之后).
这些将适用于我见过的每个*正则表达式引擎(其中一些甚至没有一个或多个"+"
字符,呃).
如果你知道你将使用一个更现代的正则表达式引擎,"\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
davethegr8.. 43
\040
完全匹配空格字符.
Regexp PHP参考
Regex PHP的新链接
转义序列
如果你正在寻找一个空间,那就是" "
(一个空间).
如果你正在寻找一个或多个,那就是" *"
(那是两个空格和一个星号)或" +"
(一个空格和一个加号).
如果您正在寻找共同的间距,使用"[ X]"
或"[ X][ X]*"
或"[ X]+"
其中X
是物理制表符(每个由一个单一的空间在所有这些例子之后).
这些将适用于我见过的每个*正则表达式引擎(其中一些甚至没有一个或多个"+"
字符,呃).
如果你知道你将使用一个更现代的正则表达式引擎,"\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
\040
完全匹配空格字符.
Regexp PHP参考
Regex PHP的新链接
转义序列
以下是您需要了解的关于正则表达式中的空格的所有内容:
[[:blank:]]
仅限空格或制表符
[[:space:]]
空白
\s
任何空白字符
\v
垂直空白
\h
水平的空白
x
忽略空格
在Perl中,开关是\s
(空格).
在我看来,在这种情况下使用REGEX只会有点矫枉过正.为什么不只是strpos找到空格字符.此外,正则表达式中的空格字符没有什么特别之处,您应该能够像搜索任何其他字符一样搜索它.也就是说,除非您禁用了模式空白,否则在这种情况下几乎不需要.