正如标题所述:谁能帮我弄清楚如何编写一个匹配以“.js”结尾的字符串但在给定一个以“-min.js”结尾的字符串时失败的 JavaScript 正则表达式。
例子:
hello.js -> 匹配
hellomin.js -> 匹配
hello-min.js -> 不匹配
hello-min-hello.js -> 匹配
谢谢!
正如标题所述:谁能帮我弄清楚如何编写一个匹配以“.js”结尾的字符串但在给定一个以“-min.js”结尾的字符串时失败的 JavaScript 正则表达式。
例子:
hello.js -> 匹配
hellomin.js -> 匹配
hello-min.js -> 不匹配
hello-min-hello.js -> 匹配
谢谢!
使用负前瞻:
(?!-min)[\w-]{4}\.js$
更新
这也适用于 4 个字符之前.js
:
(?:(?!-min)[\w-]{4}|^[\w-]{1,3})\.js$
使用基于上一个问题的伪反转匹配:
^((?!-min\.).)*\.js$
由于 JS 不支持负向后视,让我们使用负向前瞻!
var str = 'asset/34534534/jquery.test-min.js',
reversed = str.split('').reverse().join('');
// And now test it
/^sj\.(?!nim-)/.test(reversed); // will give you false if str has min.js at the end
好笑,对吧?
我扩展了@robinCTS 的正则表达式以匹配具有多个点的文件路径(例如文件名末尾的版本号)以及以“.min.js”结尾的字符串:
(?:(?!(-|\.)min)[\w\.-]{4}|^[\w\.-]{1,3})\.js$
例子: