2013-06-05 138 views
0

我想匹配内部/static/js的JavaScript文件,其中包括?v=xxxx末,“X”是一个字符或数字,所以它必须匹配:扩展正则表达式

http://127.0.0.1:8888/static/js/components/backbone.js?v=a6tsb 

但不是:

http://127.0.0.1:8888/static/js/views/ribbon.js 
http://127.0.0.1:8888/templates/require-config.js 

这一个哈希匹配:

var hashRegex = new RegExp("^.*\\?v=\\w{5}$"); 

但我想扩展一个以包含在产品ude“/ static/js”。

我想:

var hashRegex = new RegExp("^.*\/static\/js\/.*\\?v=\\w{5}$"); 

但似乎并不工作。

我错过了什么?

+0

你需要逃避你的斜杠吗? – waldol1

回答

2

使用JavaScript中的字符串,你需要加倍逃生时正则表达式来表示(\\)特殊字符(正则表达式的)

所以,你的正则表达式将是

var hashRegex = new RegExp("^.*/static/js/.*\\?v=\\w{5}$"); 

但是,如果你在这种情况下使用此语法的正则表达式

var hashRegex = /regex/; 

你有单\逃跑。你也逃脱/,因为它是

所以用作分隔符,您正则表达式将是

var hashRegex = /^.*\/static\/js\/.*\?v=\w{5}$/; 
1

我想试试这个:

var hashRegex = new RegExp("^.*\/static\/js\/.*\?v\=[a-zA-Z0-9]{5}$"); 

(我不知道你有没有逃脱=)

+0

如果是这种情况,则OP的第一个表达式不匹配... – waldol1