JavaScript正则表达式是否排除某些单词/短语?
如何编写正则表达式模式来测试字符串是否包含以下结构的多个子字符串:JavaScript正则表达式是否排除某些单词/短语?,javascript,regex,Javascript,Regex,如何编写正则表达式模式来测试字符串是否包含以下结构的多个子字符串: "cake.xxx" 其中xxx是任何东西,但不是“奶酪”或“牛奶”或“黄油” 例如: “我有一个蛋糕。蜂蜜和蛋糕。鸡蛋”应该返回true,但是 “我有一个蛋糕。**牛奶**和蛋糕.egg”应该返回false 这就是你想要的吗 ^(?!.*cake\.(?:milk|butter)).*cake\.\w+.* 看到了吗 如果它包含一个“cake.XXX”,那么它将匹配整行,但当它包含“cake.milk”或“cake.bu
"cake.xxx"
其中xxx是任何东西,但不是“奶酪”或“牛奶”或“黄油”
例如:
应该返回“我有一个蛋糕。蜂蜜和蛋糕。鸡蛋”
,但是true
应该返回“我有一个蛋糕。**牛奶**和蛋糕.egg”
false
这就是你想要的吗
^(?!.*cake\.(?:milk|butter)).*cake\.\w+.*
看到了吗
如果它包含一个“cake.XXX”,那么它将匹配整行,但当它包含“cake.milk”或“cake.butter”时则不匹配
*cake\。\w+.
如果有“cake.”后跟至少一个wrod字符,则此部分将匹配
(?!*cake\。(?:milk | butter))
这是一个负前瞻,如果字符串包含一个您不允许使用的单词,这将阻止匹配
^
将模式锚定到字符串的开头由于?:
,这只是一个非捕获组。唯一的区别是匹配的字符串没有存储到变量中。这意味着我可以使用(milk | butter)来代替,对吗?此外,是否有必要将“负前瞻”规则放在字符串开始标记“^”之后?是否有必要将“负前瞻”规则放在字符串开始标记“^”之后?是的,因此它将搜索整个字符串,否则它将匹配“蛋糕.牛奶”或整个字符串的部分。你可以在我的答案中的链接上试试这个简单的方法,更改正则表达式,然后看看它将匹配什么。你应该检查链接,我不能连接到那个网站?不管怎样,你给了我一个很好的答案。谢谢。