繁体   English   中英

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

[英]Regex does not contain multiple words

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

字符串不应包含测试,使用以下表达式的示例单词

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

我可以做到,但在某些情况下失败

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

在以上两个示例中

1.它有一个单词测试,所以很好用,但是在例子中
2)它应该没有单词测试

有什么办法可以做到这一点? 感谢您宝贵的时间和回复

您需要在单词周围使用\\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))) 

尝试使用此正则表达式(单词边界'\\ b'是必需的,并且在这些示例单词之前还可以出现任意数量的字符):

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

它也将匹配空字符串,因为其中不包含样本或测试词。 要检查字符串是否不能为空并且不包含样本和测试词,请使用:

/^(?!.*?\b(sample|test)\b).+?/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM