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

Gra*_*ate 14 php regex

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

pax*_*blo 16

PHP PCRE文档:

使用PCRE功能时,需要使用分隔符包围模式.分隔符可以是任何非字母数字,非反斜杠,非空白字符.

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

/\/.*\/.*\/.*\/ blah blah blah /
Run Code Online (Sandbox Code Playgroud)

要么:

!/.*/.*/.*/ blah blah blah !
Run Code Online (Sandbox Code Playgroud)

现在他们还没有经过彻底的测试,并且可能无法完全按照宣传的方式工作,但是你应该得到一般的想法,即最小的逃避要求.

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

/^http:\/\//
!^http://!
Run Code Online (Sandbox Code Playgroud)

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


xda*_*azz 5

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

它是一样的 /[0-9]/