16

我已经'!\d!'在 PHPpreg_match函数中看到了正则表达式。这是什么鬼?

4

2 回答 2

17

来自PHP PCRE 文档

使用 PCRE 函数时,需要用分隔符将模式括起来。定界符可以是任何非字母数字、非反斜杠、非空白字符。

在这种情况下,它只是!用作分隔符。如果您想在正则表达式本身中使用普通分隔符而不必对其进行转义,通常会使用它。在这种情况下并不是真正必要的,因为正则表达式的其余部分是简单的\d,但它在检查路径是否包含三个以上目录级别等事情时会派上用场。您可以使用以下任何一种:

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

或者:

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

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

另一个示例(来自上面链接的页面)是检查字符串是否以http://标记开头。这两个之一:

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

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

于 2012-09-25T09:08:38.740 回答
5

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

它与/[0-9]/

于 2012-09-25T09:09:17.167 回答