JavaScript正则表达式延迟匹配如何工作?



对于此字符串

abc.com/file/some.png?v=123

如何匹配我使用.png?

/..*??/

但是它是匹配.com/file/some.png?,那么为什么惰性匹配规则在这里不起作用呢?

这个答案有很多变体。我建议在最后一个/字符之后匹配第一个文件后缀。

这可以用这个正则表达式完成

/(?!.*/).w+?/

解释

(?!.*/).w+?

选项:不区分大小写;点与换行符不匹配;^$ 换行符处匹配

  • 断言不可能从这个位置开始匹配下面的正则表达式(负展望((?!.*/)
    • 匹配任何不是换行符的单个字符(换行符、回车符、行分隔符、段落分隔符(.*
      • 在零次和无限次之间,尽可能多地回馈,根据需要回馈(贪婪(*
    • 将字符"/"字面意思匹配/
  • 匹配字符"."字面意思.
  • 匹配作为"单词字符"(仅限 ASCII 字母、数字或下划线(的单个字符w+
    • 在一次到无限次之间,尽可能多地回馈,根据需要回馈(贪婪(+
  • 匹配问号字符?

\1

  • 插入反斜杠
  • 从字面上插入字符"1"1

与正则表达式好友一起创建

最新更新