Php 两边带感叹号的正则表达式(';!\d!';)

Php 两边带感叹号的正则表达式(';!\d!';),php,regex,Php,Regex,我已经看到了正则表达式\d!”。这到底是怎么回事?来自: 使用PCRE函数时,要求图案用分隔符括起来。分隔符可以是任何非字母数字、非反斜杠、非空白字符 在这种情况下,只需使用作为分隔符。如果您想在正则表达式本身中使用普通分隔符而不必转义它,通常会使用它。在这种情况下并不需要,因为正则表达式的其余部分只是\d,但它对于检查路径是否包含三个以上的目录级别非常方便。您可以使用以下任一选项: /\/.*\/.*\/.*\/ blah blah blah / 或: 现在,它们还没有被彻底测试过,可能不能

我已经看到了正则表达式
\d!”preg_match
函数中的code>。这到底是怎么回事?

来自:

使用PCRE函数时,要求图案用分隔符括起来。分隔符可以是任何非字母数字、非反斜杠、非空白字符

在这种情况下,只需使用
作为分隔符。如果您想在正则表达式本身中使用普通分隔符而不必转义它,通常会使用它。在这种情况下并不需要,因为正则表达式的其余部分只是
\d
,但它对于检查路径是否包含三个以上的目录级别非常方便。您可以使用以下任一选项:

/\/.*\/.*\/.*\/ blah blah blah /
或:

现在,它们还没有被彻底测试过,可能不能完全像广告中所说的那样工作,但是你应该知道它们是所需的最小逃逸

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

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

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

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


它与
/[0-9]/

相同。谢谢,我认为您必须始终使用“/”字符。“我不知道我能代替它。”毕业生,你想知道正则表达式的意思。我还提供了为什么备用分隔符很方便的原因,并充分披露了它可能需要修复。其目的仅仅是通过使用替代的分隔符来显示正则表达式可以有多干净,我不建议您使用这些示例(至少在没有调试和修复
废话废话废话
位的情况下)?可以用更好的措辞,但我认为这是一个合理的问题。搜索标点符号基本上是不可能的,从
preg\u match
doc页面到PCRE regex delimiters doc页面只需点击三次。你必须知道你在寻找“regex分隔符”,但是你已经知道答案了……我已经编写PHP多年了,我从来没有见过!用作测力计!我在谷歌上搜索,发现了这个非常有用的问题。另外,我怀疑它没有用作分隔符,因为它会导致代码可读性降低。乍一看,我将感叹号解释为“不”或“负匹配”,我认为许多其他人也这样做,因此他们为了可读性而避免使用它。
/^http:\/\//
!^http://!