【问题标题】:javascript regex: string contains this, but not thatjavascript 正则表达式:字符串包含这个,但不是那个
【发布时间】:2016-08-01 16:59:59
【问题描述】:

我正在尝试组合一个正则表达式模式,该模式匹配包含单词“front”但不包含单词“square”的字符串。我可以单独完成此任务,但无法将它们组合在一起。

前面=是

 ^((?=front).)*$

方=否

 ^((?!square).)*$

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

【问题讨论】:

标签: javascript regex


【解决方案1】:

您可以为此只使用一个否定的前瞻:

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

RegEx Demo

正则表达式详细信息:

  • ^:开始
  • 如果文本 square 出现在从起始位置开始的输入中的任何位置,(?!.*square) 是否定先行断言失败
  • .*front 将匹配 front 输入中的任何位置

【讨论】:

  • 谢谢!如果我想测试它是否以任何顺序包含它们,该怎么办?
  • if it DID contain them both, in any order 然后使用 /^(?=.*square)(?=.*front)/
  • 我知道您的回答与订单无关,变化是现在我想要正方形。我可以删除感叹号吗?.....查看您的编辑....谢谢!
  • 我同意这是正确的答案。但是如果你需要 "front" 在字符串的开头,你可以使用这个:/^(?!.*square)front/
【解决方案2】:

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

最终的模式如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多