3
我在遍历链接并选择我需要的正则表达式。JavaScript:循环内外正则表达式测试的不同结果
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
我在做什么错? :) 谢谢。
为什么你会用一个常量字符串的正则表达式构造函数?只需使用像在控制台中使用的正则表达式字面值即可。 – Musa
在不相关的说明中,您还需要转义正则表达式中的'.'字符。再次,它是字符串文字中的两个反斜杠,一个是正则表达式文字。 (除了第一个'.'不需要转义,因为它在一个字符类中,所以规则是不同的。)注意:这样的小事情有时会危及安全。例如,如果你的代码假设任何与这个正则表达式匹配的URL都是可信的,那么恶意的人可以通过注册URL'http:// my-malicious-url-time.com /'来规避它,已经写了它。 –