否定正则表达式匹配单个单词以返回不匹配

时间:2015-07-21 21:54:18

标签: php regex regex-lookarounds

我需要否定这个正则表达式:

^sofia$ 

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你需要一个消极的向前看:

^(?!sofia$).*$

请参阅demo

编辑:如果您只对preg_match的布尔结果感兴趣,可以删除.*$

此外,如果输入字符串包含换行符号,则需要单行修饰符/s(或其内联变体(?s))。 E.g。

(?s)^(?!sofia$).*$

或者

/^(?!sofia$).*$/s

您的^sofia$匹配等于sofia的字符串/行,因此您必须查找与任何不等于sofia的字符串/行匹配的正则表达式。

负向前瞻可用于限制通用模式。在这里,.*匹配任何字符,但换行符为0或更多次。前瞻检查字符串/行的开头是否没有sofia