1

正如标题所述:谁能帮我弄清楚如何编写一个匹配以“.js”结尾的字符串但在给定一个以“-min.js”结尾的字符串时失败的 JavaScript 正则表达式。

例子:

hello.js -> 匹配

hellomin.js -> 匹配

hello-min.js -> 不匹配

hello-min-hello.js -> 匹配

谢谢!

4

5 回答 5

3

使用负前瞻:

(?!-min)[\w-]{4}\.js$

更新

这也适用于 4 个字符之前.js

(?:(?!-min)[\w-]{4}|^[\w-]{1,3})\.js$

于 2013-01-28T14:11:37.697 回答
2

使用基于上一个问题的伪反转匹配:

^((?!-min\.).)*\.js$
于 2013-01-28T14:14:58.880 回答
0

由于 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

好笑,对吧?

于 2013-01-28T14:13:22.377 回答
0

我扩展了@robinCTS 的正则表达式以匹配具有多个点的文件路径(例如文件名末尾的版本号)以及以“.min.js”结尾的字符串:

(?:(?!(-|\.)min)[\w\.-]{4}|^[\w\.-]{1,3})\.js$

例子:

  • hello.js -> 匹配
  • hellomin.js -> 匹配
  • hellomin-2.4.3.js -> 匹配
  • hello-min-hello.js -> 匹配
  • hello-min.js -> 不匹配
  • hello.min.js -> 不匹配
  • hellomin-2.4.3-min.js -> 不匹配
  • hellomin-2.4.3.min.js -> 不匹配
于 2015-02-11T07:01:57.843 回答
-1

您可以使用负面的lookbehind:

(?<!-min)\.js$

例子

于 2013-01-28T14:00:31.793 回答