我正在迭代链接并选择正则表达式我需要的东西。
var str = "http://([^.]*).time.com/($|(page/\d/))";
var reg = new RegExp(str); var arr = [], l = document.links;
for(var i=0; i<l.length; i++) {
console.log(l[i].href + '\t\t\t-' + reg.test(l[i].href));
}
>...
>http://newsfeed.time.com/page/3/ -false
>...
可是:
/http:\/\/([^.]*).time.com\/($|(page\/\d\/))/.test('http://newsfeed.time.com/page/3/')
>true
我做错了什么? :)谢谢。
答案 0 :(得分:1)
当您在字符串中指定正则表达式时,应该在\d
中转义反斜杠。这在正则表达式文字中是不需要的,这就是它起作用的原因。所以这一行:
var str = "http://([^.]*).time.com/($|(page/\d/))";
应如下所示:
var str = "http://([^.]*).time.com/($|(page/\\d/))";
答案 1 :(得分:1)
你需要在正则表达式的字符串版本中转义反斜杠(即使用\\d
):
var str = "http://([^.]*).time.com/($|(page/\\d/))";
所以:
var str = "http://([^.]*).time.com/($|(page/\\d/))";
var reg = new RegExp(str); var arr = [], l = ['http://newsfeed.time.com/page/3/'];
for(var i=0; i<l.length; i++) {
console.log(l[i] + '\t\t\t-' + reg.test(l[i]));
}
给出:
http://newsfeed.time.com/page/3/ -true