0

我正在尝试匹配末尾/static/js包含的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

这个匹配哈希:

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

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

我试过了:

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

但似乎不起作用。

我错过了什么?

4

2 回答 2

2

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

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

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

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

var hashRegex = /regex/;

你必须用 single 转义\。你也会转义/,因为它被用作分隔符

因此,在这种情况下,您的正则表达式将是

var hashRegex = /^.*\/static\/js\/.*\?v=\w{5}$/;
于 2013-06-05T16:05:56.087 回答
1

我会试试这个:

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

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

于 2013-06-05T15:56:46.277 回答