我需要否定这个正则表达式:
^sofia$
我该怎么做?
答案 0 :(得分:1)
你需要一个消极的向前看:
^(?!sofia$).*$
请参阅demo
编辑:如果您只对preg_match
的布尔结果感兴趣,可以删除.*$
。
此外,如果输入字符串包含换行符号,则需要单行修饰符/s
(或其内联变体(?s)
)。 E.g。
(?s)^(?!sofia$).*$
或者
/^(?!sofia$).*$/s
您的^sofia$
匹配等于sofia
的字符串/行,因此您必须查找与任何不等于sofia
的字符串/行匹配的正则表达式。
负向前瞻可用于限制通用模式。在这里,.*
匹配任何字符,但换行符为0或更多次。前瞻检查字符串/行的开头是否没有sofia
。