我需要匹配PHP正则表达式中的空格字符.有人有任何想法吗?
我的意思是"gavin schulz",这两个词之间的空间.我使用正则表达式来确保我只允许字母,数字和空格.但我不确定如何找到空间.这就是我现在所拥有的:
$newtag = preg_replace("/[^a-zA-Z0-9s|]/", "", $tag);
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 342
如果你正在寻找一个空间,那就是" "(一个空间).
如果你正在寻找一个或多个,那就是" *"(那是两个空格和一个星号)或" +"(一个空格和一个加号).
如果您正在寻找共同的间距,使用"[ X]"或"[ X][ X]*"或"[ X]+"其中X是物理制表符(每个由一个单一的空间在所有这些例子之后).
这些将适用于我见过的每个*正则表达式引擎(其中一些甚至没有一个或多个"+"字符,呃).
如果你知道你将使用一个更现代的正则表达式引擎,"\s"它的变化是要走的路.另外,我相信单词边界也匹配行的开头和结尾,当你在寻找可能没有前后空格的单词时很重要.
特别是对于PHP,这个页面可能会有帮助.
从您的编辑中,您似乎想要删除所有无效字符.这是开头(请注意正则表达式中的空格):
$newtag = preg_replace ("/[^a-zA-Z0-9 ]/", "", $tag);
# ^ space here
Run Code Online (Sandbox Code Playgroud)
如果你也想要欺骗以确保每个单词之间只有一个空格,并且在开头或结尾都没有空格,那就更复杂了(可能是另一个问题),但基本的想法是:
$newtag = preg_replace ("/ +/", " ", $tag); # convert all multispaces to space
$newtag = preg_replace ("/^ /", "", $tag); # remove space from start
$newtag = preg_replace ("/ $/", "", $tag); # and end
Run Code Online (Sandbox Code Playgroud)
Fle*_*ipp 23
以下是您需要了解的关于正则表达式中的空格的所有内容:
[[:blank:]] 仅限空格或制表符[[:space:]] 空白 \s 任何空白字符\v 垂直空白\h 水平的空白 x 忽略空格在Perl中,开关是\s(空格).
我正在使用正则表达式来确保我只允许使用字母、数字和空格
然后就像在你已经拥有的东西上添加一个空格一样简单:
$newtag = preg_replace("/[^a-zA-Z0-9 ]/", "", $tag);
Run Code Online (Sandbox Code Playgroud)
(注意,我删除了s|似乎是无意的?当然s是多余的;|如果需要,您可以恢复)
如果您特别想要 *a* 空间,因为只有一个空间,您将需要一个比这更复杂的表达式,并且可能需要考虑单独的非正则表达式逻辑。
| 归档时间: |
|
| 查看次数: |
690798 次 |
| 最近记录: |