匹配正则表达式中的空格

Gav*_*ulz 213 php regex

我需要匹配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)


dav*_*gr8 43

\040 完全匹配空格字符.

Regexp PHP参考

Regex PHP的新链接
转义序列


Fle*_*ipp 23

以下是您需要了解的关于正则表达式中的空格的所有内容:

  • [[:blank:]] 仅限空格或制表符
  • [[:space:]] 空白
  • \s 任何空白字符
  • \v 垂直空白
  • \h 水平的空白
  • x 忽略空格


Els*_*rko 5

在Perl中,开关是\s(空格).

  • 这是不正确的 - 它收集所有空格,而不仅仅是空格字符. (15认同)
  • @PeterMortensen Perl 和 PHP 使用相同的正则表达式引擎 PCRE,因此这将在 PHP 中工作。 (3认同)

Kib*_*bee 5

在我看来,在这种情况下使用REGEX只会有点矫枉过正.为什么不只是strpos找到空格字符.此外,正则表达式中的空格字符没有什么特别之处,您应该能够像搜索任何其他字符一样搜索它.也就是说,除非您禁用了模式空白,否则在这种情况下几乎不需要.


Pet*_*ton 5

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

然后就像在你已经拥有的东西上添加一个空格一样简单:

$newtag = preg_replace("/[^a-zA-Z0-9 ]/", "", $tag);
Run Code Online (Sandbox Code Playgroud)

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

如果您特别想要 *a* 空间,因为只有一个空间,您将需要一个比这更复杂的表达式,并且可能需要考虑单独的非正则表达式逻辑。