扩展正则表达式

时间:2013-06-05 15:51:02

标签: javascript regex

我正在尝试匹配最后包含/static/js的{​​{1}}内的javascript文件,'x'是字符或数字,因此必须匹配:

?v=xxxx

但不是:

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

但我正在尝试将其扩展为包含“/ static / js”。

我试过了:

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

但似乎没有用。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

在javascript中使用字符串表示正则表达式时,您需要双重转义(\\)特殊字符(正则表达式)

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

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

但是如果你将此语法用于正则表达式

var hashRegex = /regex/;

你必须使用单个\进行转义。你也可以转义/,因为它被用作分隔符

所以,在这种情况下你的正则表达式将是

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

答案 1 :(得分:1)

我会试试这个:

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

(我不知道你是否必须逃避=)

相关问题