如何在正则表达式中取反一个精确匹配?

4
如果用户输入的是 "null",我希望正则表达式不匹配。但是,输入 "xxxnullxxx" 是可以的。
以下正则表达式可以拒绝 "null",但它也会拒绝任何包含 "null" 的字符串,这不是我想要的。
^(?!.*null).*$

3
为什么需要正则表达式?只需使用 if ("null".equals(str)) 即可。 - 4castle
1
可能是如何否定整个正则表达式?的重复问题。 - Martin Cup
1
@4castle 在许多情况下,验证 API 只是正则表达式。 - Bohemian
@4castle:我正在使用一个接受正则表达式来验证表单字段的JavaScript库。 - Jin Kim
2个回答

4

在前瞻中添加$并删除.*

^(?!null$).*

结尾的$不是必需的。

1
在使用你的答案变形版本后,我成功让它工作:^(?!null$),不包括结尾的.$。 - Jin Kim
@jim 如果你的意思是 ^(?!null).*,那么它将匹配 "nullify" 等。 - Bohemian
2
我指的是 ^(?!null$)。我只想忽略精确匹配的 "null"。 - Jin Kim

1
这将匹配除了null之外的所有内容:^(?!(?:null)$).*$ 我从这里得到了这个想法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接