正则表达式不包含多个单词

时间:2019-04-30 09:52:17

标签: javascript regex

如何使用正则表达式避免字符串中的某些单词

字符串不应该包含测试字词 使用下面的表达式

^((?!(sample|test)).)*$

我能够做到,但在某些情况下失败

 example: 
    1) this is a test case 
    2) this is a testing area 

在以上两个示例案例中

1。它具有单词测试功能,因此效果很好,但在示例中
 2)应该没有单词测试

有什么方法可以实现?感谢您宝贵的时间和回复

2 个答案:

答案 0 :(得分:4)

您需要在单词周围使用\b,以便它们允许匹配,仅当它们不作为完整单词出现时才适用。尝试使用它,

^(?:(?!\b(sample|test)\b).)*$

此外,除非您打算使用其值,否则最好将一个组设为非捕获组。

Regex Demo

编辑:

要区分大小写,请在正则表达式中将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).+?/