我的基本javascript正则表达式包含至少包含一个字母的任何字符串:
^(.*[A-Za-z]+.*)+
现在我想更新这个正则表达式,以便它不会匹配以下单词:" n \ a"和"无"。包含它们是有效的,意思是" n \ aa"或" nn \ a"是有效的,只是与我不想要的单词完全匹配的单词将导致正则表达式不匹配。
我看到很多例子都没有包含特定字符串的单词,使用负面的后观,如
^(?!.*bar).*$
但是我无法将其转换为精确匹配。
答案 0 :(得分:1)
(?!)
实际上是一个负面的预测。但你说得对,这是正确的:
^(?!n\\a$)(?!none$)(.*[A-Za-z].*)
基本上,从开头(^
)开始,我们希望确保直到结尾($
)字符串不仅包含这两个字符串。
要使此不区分大小写,您只需添加i
正则表达式标记:
'NONE'.match(/^(?!n\\a$)(?!none$)(.*[A-Za-z].*)/) // => ["NONE", "NONE"]
'NONE'.match(/^(?!n\\a$)(?!none$)(.*[A-Za-z].*)/i) // => null
另请注意,您的原始正则表达式并不需要+
,因为匹配的正则表达式已确保至少存在一个。