例如 :
String s= "Hello every one !! ";
现在我想检查字符串是否不以
Hello
Hi
Hey
然后返回真?
最佳答案
您可以使用 Negative Lookahead在这样的正则表达式中:
这是针对 JavaScript 的
/^(?!Hello|Hi|Hey).+/gm
将匹配下面的 4 和 8 行
^ - 起跑线
(?!) - 从表达式中的当前位置开始,确保给定的模式不会匹配。不消耗字符。
在你的情况下,“你好”或“嗨”或“嘿”表达 您好|您好|您好这意味着:逐字匹配字符 Hello(区分大小写)或 字面上匹配字符 Hi(区分大小写)或 逐字匹配字符 Hey(区分大小写)
.+ - 匹配一次到无限次之间的任何字符(换行符除外),尽可能多次,例如所有的
米 修饰符:多行。导致 ^ 和 $ 匹配每行的开头/结尾(不仅是字符串的开头/结尾)( 在匹配字符串的情况下不需要 )
克 修饰符:全局。所有匹配(在第一次匹配时不返回)( 在匹配字符串的情况下也不需要 )
附言您可以使用更短的版本
/^(?!H(ello|i|ey)).+/gm
P.P.S.这些示例也适用于 Ruby、Python 和 PHP
关于不以几个给定单词开头的字符串的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637151/