javascript - javascript regex 惰性匹配是如何工作的?
问题描述
对于这个字符串
abc.com/file/some.png?v=123
我如何匹配.png?
我使用
/\..*?\?/
但它是匹配.com/file/some.png?
的,那么为什么惰性匹配规则在这里不起作用?
解决方案
这个答案有很多变体。/
我会建议在最后一个字符之后匹配第一个文件后缀。
这可以用这个正则表达式来完成
/(?!.*\/)\.\w+\?/
解释
(?!.*/)\.\w+\?
选项:不区分大小写;点与换行符不匹配;^$ 匹配换行符
- 断言不可能从这个位置开始匹配下面的正则表达式(负前瞻)
(?!.*/)
- 匹配字符“.” 字面上地
\.
- 匹配作为“单词字符”的单个字符(仅限 ASCII 字母、数字或下划线)
\w+
- 匹配问号字符
\?
\1
- 插入反斜杠
\
- 按字面意思插入字符“1”
1
推荐阅读
- html - 如何将类应用于动态生成的内容?
- google-sheets - 如果谷歌表格中的单元格中有重复相同的标记,如何指定分割单词的标记?
- flutter - Flutter - 我想使用 GestureDetector 而不是按钮
- javascript - 如何创建表单格式的json数组vuejs?
- r - FUN(内容(x),...)中的错误:'utf8towcs'中的输入'XxX std chgs to send,'1.50 to rcv'无效
- sql-server - 尝试在 VS / SSDT 中连接 SQL Server 以编辑 DTSX / SSIS 进程,“无效的类字符串”
- reactjs - Redux Toolkit `useAppSelector` 值在未更新时会导致渲染
- javascript - 无效的位域标志或编号:37035584
- c# - 当 child.Parent 属性在循环内更改时,为什么 foreach over this.Controls 集合无法正常工作
- java - 从选择的数据中创建一个唯一的字符串(可反向工程)