2013-06-05 132 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