JavaScript正则表达式:字符串包含这个,但不包含那个。

3
我正在尝试组合一个正则表达式模式,该模式匹配包含单词“front”但不包含单词“square”的字符串。我可以分别完成这两个部分的匹配,但是将它们组合在一起时遇到了问题。
前面=YES
 ^((?=front).)*$

方形=否

 ^((?!square).)*$

然而,如何将它们组合成单个正则表达式?

这个回答对您有帮助吗?正则表达式匹配一个单词但不包含另一个单词的字符串 - oguz ismail
2个回答

6
你可以只使用一个否定先行断言来实现这个功能:
/^(?!.*square).*front/

正则表达式演示

正则表达式详情:

  • ^:开始位置
  • (?!.*square)是负向先行断言,如果文本中从起始位置开始存在单词“square”,则断言失败
  • .*front将匹配任何包含单词“front”的文本

谢谢!如果我想测试它们是否都包含,无论顺序如何,该怎么办? - Andrew Hall
如果它们都包含,无论顺序如何,则使用 /^(?=.*square)(?=.*front)/ - anubhava
1
我理解你的回答是无序的,现在我想要正方形。我可以只删除感叹号吗?请看你的编辑,谢谢! - Andrew Hall
我同意这是正确的答案。但如果你需要“front”在字符串开头,你可以使用这个:/^(?!.*square)front/ - JMichaelTX

0

你可以使用前瞻断言来表达逻辑与:

最终的模式将会是这样的:

^(?=.*?front)(?!.*square)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接