我正在遍历链接,并通过regex选择我需要的内容。
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 + 'ttt-' + 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
我做错了什么?:)非常感谢。
您需要转义正则表达式的字符串版本中的反斜杠(即使用\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] + 'ttt-' + reg.test(l[i]));
}
给出:
http://newsfeed.time.com/page/3/ -true
在字符串中指定正则表达式时,应转义d
中的反斜杠。regex文本中不需要这一点,这就是它工作的原因。所以这行:
var str = "http://([^.]*).time.com/($|(page/d/))";
应该是这样的:
var str = "http://([^.]*).time.com/($|(page/\d/))";