javascript中的负面观察

时间:2017-10-11 06:26:41

标签: javascript regex

我正在使用以下正则表达式:

https://(dev-|stag-|)(assets|images).server.io/v[\d]/file/(.*?)/(?!(download$))

目的是匹配Url 1& 3完全,但不是Url 2 ,但它似乎不起作用。

通过检查以下答案: Javascript regex negative look-behindRegex: match everything but,  我认为负面的后视可行,但我无法弄清楚这是什么样的正则表达式。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

(?!(download$))部分by itself在这里没有做正确的事情,因为如果有download并且字符串结尾紧接着最后一个{{1匹配。您需要将最后一个子部分与消耗模式实际匹配,以实际匹配文件名。

您可以使用

/

请参阅regex demo。如果需要匹配整个字符串,请在模式的开头添加/https:\/\/(dev-|stag-)?(assets|images)\.server\.io\/v\d\/file\/(.*?)\/(?!download$)[^\/]+$/ ^^^^^^^^^^^^^ 锚点。 ^后面的s也可以选择?

<强>详情

  • https:\/\/ - https://子字符串
  • (dev-|stag-)? - 可选的dev-stag-子字符串
  • (assets|images) - assetsimages substring
  • \.server\.io\/v - .server.io/v子字符串
  • \d - 任意数字
  • \/file\/ - /file/子字符串
  • (.*?) - 除了换行符之外的任何0 +字符,尽可能少
  • \/ - /
  • (?!download$) - 当前位置右侧的字符串位置后面不能有download子字符串
  • [^\/]+ - 尽可能多的/以外的一个或多个字符
  • $ - 字符串结束。

请注意[\d]的可读性低于\d,如果您想匹配文字点字符,则需要在模式中转义.符号。