JavaScript正则表达式查找以“.js”结尾而不是“-min.js”的字符串

时间:2013-01-28 13:52:04

标签: javascript regex

正如标题所述:任何人都可以帮我弄清楚如何编写一个JavaScript字符串表达式,该表达式匹配以“.js”结尾的字符串,但在给定以“-min.js”结尾的字符串时失败。 / p>

示例:

hello.js - >匹配

hellomin.js - >匹配

hello-min.js - >没有比赛

hello-min-hello.js - >匹配

谢谢!

5 个答案:

答案 0 :(得分:3)

使用否定前瞻:

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

<强>更新

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

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

答案 1 :(得分:2)

使用基于previous question的伪反转匹配:

^((?!-min\.).)*\.js$

答案 2 :(得分: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

好笑,对吧?

答案 3 :(得分:0)

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

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

示例:

  • hello.js - &gt;匹配
  • hellomin.js - &gt;匹配
  • hellomin-2.4.3.js - &gt;匹配
  • hello-min-hello.js - &gt;匹配
  • hello-min.js - &gt;没有比赛
  • hello.min.js - &gt;没有比赛
  • hellomin-2.4.3-min.js - &gt;没有比赛
  • hellomin-2.4.3.min.js - &gt;没有比赛

答案 4 :(得分:-1)

你可以使用负面的lookbehind:

(?<!-min)\.js$

Example