javascript - 如何使用正则表达式匹配不包含多个特定单词之一的字符串?
问题描述
如何使用正则表达式来避免匹配包含多个特定单词之一的字符串?
例如:一个字符串不应该包含单词test
, 也不sample
:
^((?!(sample|test)).)*$
我的正则表达式在某些情况下失败:
1. this is a test case
2. this is a testing area
在上面的两个例子中:
- 它有这个词
test
,所以它工作得很好。 - 它没有
test
应该被允许的词
有什么办法可以做到这一点?
解决方案
您需要\b
在单词周围使用,以便它们允许匹配,仅当它们不作为整个单词出现时。试试用这个,
^(?:(?!\b(sample|test)\b).)*$
此外,将组设为非捕获是一个好主意,除非您打算使用它们的值。
编辑:
为了使其区分大小写,请通过在正则表达式之后i
放置来启用该标志。JS演示,i
/
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)))
推荐阅读
- c# - C#创建的按钮采用TextBlock的样式,不能被覆盖。WPF
- javascript - 如何将每个 div span id 存储到 JavaScript 中的动态列表中?
- laravel - Laravel - 在 /public 文件夹中不断重新创建日志
- coq - 如何在 Coq 上使用等式的对称性
- javascript - 如何在tiptap中制作节点可以在里面添加另一个节点
- angularjs - 我想在加载时将两个输入文本区域字段绑定到第三个文本区域,即在输入第一个、第二个值时
- r - ggplot2 使用完全相同的代码产生不同的输出
- javascript - 为什么 setWindowSize 在 chrome 中不起作用?
- reactjs - Redux 存储在调度后不更新(异步数据加载)
- javascript - “onclick”在我的弹出按钮中不起作用(MapoboxGL)