正则表达式匹配字符串与子串" / status"除非它包含"订阅/状态"

时间:2017-06-06 19:11:30

标签: regex

我知道如何匹配以" / status":const query = { "handler_url_str": { "$regex": "^.*status$" } }; 结尾的字符串。

但是,我不希望这种情况适用于以" subscription / status"结尾的字符串。

非常感谢您的帮助!

编辑:我使用Javascript库来执行mongoDB查询。这就是我到目前为止所做的:

{{1}}

不幸的是,这匹配所有文件,以" / status"结尾。

2 个答案:

答案 0 :(得分:2)

您可以使用

"$regex": /^(?!.*subscription\/status$).*\/status$/

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • (?!.*subscription/status$) - 如果在除了换行符(.*)之外的任何0 +字符之后,如果在字符串末尾有subscription/status
  • .* - 除了换行符之外的任何0 +字符
  • /status - 文字子字符串
  • $ - 字符串结束。

答案 1 :(得分:1)

解决方案

"$regex": "^.*(?<!subscription)\/status$"

解释

  • ^.* - 以零个或多个字符开头
  • 其次是
    • (?<!subscription)\/status - /status前面没有subscription
  • $ - 模式结束