我有一个正则表达式来寻找只是将“N / A”或类似内容粘贴到表单字段中的人。
^(?!(\b(N/A|NA|n/a|na|Yes|yes|YES|No|no|NO)\b))
我肯定不是最优雅的。然而,我不能为我的生活得到它允许上面的话,如果后面的东西。
因此,如果有人只是键入“是”,那么我希望它不通过正则表达式检查。但如果有人输入“是的,我就等等等等”,我希望它能够通过。
我所使用的表达式允许使用该单词,只要它不是句子中的第一个单词即可。我只是想禁止列出的单词作为该领域的唯一单词。
有什么想法吗?
由于
答案 0 :(得分:2)
您可以删除第一个\b
(它在字符串的开头和单词char之间是多余的),并用$
(字符串结尾)替换第二个{
^(?!(?:N/A|NA|n/a|na|Yes|yes|YES|No|no|NO)$)
请参阅regex demo
使用不区分大小写的选项,您可以将模式缩小为
^(?!(?:n/?a|yes|no)$)
<强>详情
^
- 开始字符串,然后...... (?!(?:n/?a|yes|no)$)
- 字符串中未紧跟n/?a
(na
,n/a
),yes
或no
的位置跟着字符串的结尾。在人类的话说,如果整个字符串不等于交替组内的替代字符,则只匹配字符串的开头。
答案 1 :(得分:0)
最简单的方法是精确匹配所有禁用字符串并反转结果。
使用不区分大小写的选项尝试^(n/?a|yes|no)$
并反转结果。
^
匹配字符串的开头。 $
匹配字符串的结尾。
如果您没有不区分大小写的选项,请使用^([nN]/?[aA]|[yY][eE][sS]|[nN][oO])$
。