正则表达式,两边都带有感叹号('!\ d!')

时间:2012-09-25 09:06:42

标签: php regex

我在PHP '!\d!'函数中看到了正则表达式preg_match。这到底是什么?

2 个答案:

答案 0 :(得分:16)

来自PHP PCRE docs

  

使用PCRE功能时,要求图案由分隔符包围。分隔符可以是任何非字母数字,非反斜杠,非空白字符。

在这种情况下,它只是使用!作为分隔符。如果你想在正则表达式中使用正常的分隔符而不必逃避它,通常会使用它。在这种情况下并不是必需的,因为正则表达式的其余部分只是\d,但它对于检查路径包含三个以上目录级别之类的东西很方便。您可以使用以下任一项:

/\/.*\/.*\/.*\/ blah blah blah /

或:

!/.*/.*/.*/ blah blah blah !

现在他们还没有经过彻底的测试,并且可能无法完全像宣传的那样完成,但是您应该了解所需的最小转义。

另一个例子(从上面链接的页面)检查字符串是否以http://标记开头。这两者中的任何一个:

/^http:\/\//
!^http://!

就足够了,但第二个更容易理解。

答案 1 :(得分:5)

!用作分隔符,\d匹配单个数字。

/[0-9]/

相同