这个javascript中的正则表达式
var foo = RegExp("^https?:\/\/(\w+\.)*youtube\.([a-zA-Z0-9])+");
将匹配以下字符串:[以下语句返回true]
foo.test("http://www.youtube.com");
foo.test("https://www.youtube.com");
foo.test("http://youtube.com");
但如果表达式为:
,则相同的测试失败var foo_fail = RegExp("^https?:\/\/(\w+\.)*youtube\.\w+");
这个RegExp应该已通过上述测试,但我看到: foo_fail.test( “http://www.youtube.com”);在chrome / firebug控制台上返回false。这应该是真的。这个表达有什么问题?
如果在perl上运行,则类似的表达式返回预期的成功匹配。
答案 0 :(得分:5)
您在w
:
\.\w+
此外,对于静态正则表达式,从不使用[new] RegExp()
语法,而是使用正则表达式文字:
var foo = /^https?:\/\/(\w+\.)*youtube\.\w+/;