JavaScript RegEx不包括某些单词/短语?

时间:2011-10-06 12:21:53

标签: javascript regex

如何编写一个RegEx模式来测试一个字符串是否包含几个具有结构的子串:

"cake.xxx"

其中xxx是任何东西,但不是“奶酪”或“牛奶”或“奶油”。

例如:

  • "I have a cake.honey and cake.egg"应该返回true,但
  • "I have a cake.**milk** and cake.egg"应该返回false

2 个答案:

答案 0 :(得分:17)

这是你想要的吗?

^(?!.*cake\.(?:milk|butter)).*cake\.\w+.*

here on Regexr

如果它包含“cake.XXX”,则会匹配整行,但是当它的“cake.milk”或“cake.butter”

时,它将匹配

.*cake\.\w+.*如果有“蛋糕”,这部分将匹配。其次是至少一个人。

(?!.*cake\.(?:milk|butter))这是一个负向前瞻,如果字符串包含您不允许的单词之一,这将阻止匹配

^将模式锚定到字符串的开头

答案 1 :(得分:2)

正则表达式字符(例如*+?{0})仅适用于最后一个字符

你应该将单词或短语放在non-matching group中,如下所示:

(?:someWord){0}表示someWord重复(存在)0次,而不会将其放入您的匹配

(?!someWord)做同样的事情

regex101是测试正则表达式并查看细分的好方法