我怎么能写测试一个正则表达式,如果字符串包含几个子结构为:JavaScript RegEx排除某些词/短语?
"cake.xxx"
其中xxx为什么,但不“奶酪”或“奶”或“黄油”。
例如:
"I have a cake.honey and cake.egg"
应该返回true
,但"I have a cake.**milk** and cake.egg"
应该返回false
。
我怎么能写测试一个正则表达式,如果字符串包含几个子结构为:JavaScript RegEx排除某些词/短语?
"cake.xxx"
其中xxx为什么,但不“奶酪”或“奶”或“黄油”。
例如:
"I have a cake.honey and cake.egg"
应该返回true
,但"I have a cake.**milk** and cake.egg"
应该返回false
。这是你想要的吗?
^(?!.*cake\.(?:milk|butter)).*cake\.\w+.*
这其中是否包含 “cake.XXX”,而不是当它的 “cake.milk” 或 “cake.butter”
.*cake\.\w+.*
这完全匹配一行如果有“蛋糕”,部分将会匹配。随后至少有一个wrod字符。
(?!.*cake\.(?:milk|butter))
这是一种消极的先行,这将阻止如果字符串包含单词之一,你不允许
^
锚图案到字符串的开头
正则表达式匹配的字符(如*
,+
,?
,并且{0}
)只适用于最后一个字符
你应该把这个词或短语在non-matching group,像这样:
(?:someWord){0}
意味着someWord
重复(存在)0次,没有把它在你的比赛
(?!someWord)
做同样的事情
regex101是测试正则表达式良好的操场,看到击穿
我想知道为什么它是(?:牛奶)而不是(牛奶?)? –
这只是一个非捕获组,因为'?:'。唯一的区别是匹配的字符串不存储到变量中。 – stema
这意味着我可以使用(牛奶),对吧?还有更多,是否需要在字符串开始标记“^”之后加上“负向预览”规则? –