0

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。这应该返回 true。这个表达式有什么问题?

类似的表达式 if run on perl 返回预期的成功匹配。

4

1 回答 1

5

您在 : 之前缺少反斜杠w

\.\w+

此外,对于静态正则表达式,永远不要使用[new] RegExp()语法,而是使用正则表达式文字:

var foo = /^https?:\/\/(\w+\.)*youtube\.\w+/;
于 2012-07-27T23:27:33.737 回答