我需要在PHP正则表达式中匹配一个空格字符。任何人有任何想法吗?
我的意思是像“ gavin schulz”一样,两个单词之间的空格。我使用正则表达式来确保只允许使用字母,数字和空格。但是我不确定如何找到空间。这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
我需要在PHP正则表达式中匹配一个空格字符。任何人有任何想法吗?
我的意思是像“ gavin schulz”一样,两个单词之间的空格。我使用正则表达式来确保只允许使用字母,数字和空格。但是我不确定如何找到空间。这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
Answers:
如果您正在寻找一个空格,那就是" "
(一个空格)。
如果要查找一个或多个,则为" *"
(两个空格和一个星号)或" +"
(一个空格和一个加号)。
如果要查找公共间距,请使用"[ X]"
或"[ X][ X]*"
或物理制表符"[ X]+"
在哪里X
(在所有这些示例中,每个制表符前面都有一个空格)。
这些将在我见过的每一个正则表达式引擎中都可以使用(其中有些甚至没有一个或多个"+"
字符ugh)。
如果您知道您将使用更现代的正则表达式引擎之一,那么"\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
A-Za-z...
。方括号内的尖号指示了这一点。移动插入方括号外面改变其含义匹配字符的字符串的开始设定。
我正在尝试[[:space:]]在一个实例中,好像WordPress中的博客正在使用非标准的空格字符。看起来会起作用。
像这样使用它可以留出单个空间。
$newtag = preg_replace("/[^a-zA-Z0-9\s]/", "", $tag)