3

我正在遍历链接并通过正则表达式选择我需要的内容。

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

我究竟做错了什么?:) 谢谢。

4

2 回答 2

1

\d当您在字符串中指定正则表达式时,您应该转义反斜杠。这在正则表达式文字中不需要,这就是它起作用的原因。所以这一行:

var str = "http://([^.]*).time.com/($|(page/\d/))";

应该是这样的:

var str = "http://([^.]*).time.com/($|(page/\\d/))";
于 2013-08-27T22:21:49.563 回答
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
于 2013-08-27T22:22:00.017 回答