如何使用正则表达式避免字符串中的某些单词
字符串不应该包含测试字词 使用下面的表达式
^((?!(sample|test)).)*$
我能够做到,但在某些情况下失败
example:
1) this is a test case
2) this is a testing area
在以上两个示例案例中
1。它具有单词测试功能,因此效果很好,但在示例中
2)应该没有单词测试
有什么方法可以实现?感谢您宝贵的时间和回复
答案 0 :(得分:4)
您需要在单词周围使用\b
,以便它们允许匹配,仅当它们不作为完整单词出现时才适用。尝试使用它,
^(?:(?!\b(sample|test)\b).)*$
此外,除非您打算使用其值,否则最好将一个组设为非捕获组。
编辑:
要区分大小写,请在正则表达式中将i
放在i
之后,启用/
标志。 JS演示
var arr = ['this is a test case','this is a testing area','this is a Test area']
arr.forEach(s => console.log(s + " --> " + /^(?:(?!\b(sample|test)\b).)*$/i.test(s)))
答案 1 :(得分:1)
尝试此正则表达式(单词边界'\ b'是必需的,并且在这些示例单词之前还可以出现任意数量的字符):
/^(?!.*?\b(sample|test)\b)/
它也将匹配空字符串,因为它不包含样本或测试词。要检查字符串是否不能为空并且不包含样本和测试词,请使用:
/^(?!.*?\b(sample|test)\b).+?/