这个正则表达式在PHP中意味着什么?

时间:2010-08-27 04:36:14

标签: php regex

/(?![a-z]+:)/

有谁知道?

3 个答案:

答案 0 :(得分:3)

/是分隔符。

?!negative lookahead.

[a-z]character class(a-z范围内的任何字符)

+是上述模式的one-or-more times(在这种情况下为[a-z]

:只是冒号

它大致意味着“向前看并确保没有字母后跟冒号”。

这个正则表达式更有意义,如果它有一个字符串锚点的开始:/^(?![a-z]+:/,所以它不匹配abc:(就像其他答案之一所说),但没有({{ {1}})我不知道这有多大用处。

答案 1 :(得分:2)

根据Regex Buddy(我强烈推荐的产品):

Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?![a-z]+:)»
   Match a single character in the range between “a” and “z” «[a-z]+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
   Match the character “:” literally «:»

答案 2 :(得分:0)

(?!REGEX)negative lookahead的语法。检查链接以获得前瞻的解释。

如果模式[a-z]+:出现在当前位置的字符串中,则正则表达式失败。如果找不到模式,则正则表达式会成功,但不会消耗任何字符。

匹配123:abc 但不匹配abc:

它会匹配:中的abc: