在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上运行,类似表达式会返回预期的成功匹配。
别你想在最后一个“w”之前使用'“^ https?:\/\ /(\ w + \。)* youtube \。(\ w)+”'带反斜杠吗?另一个区别是'\ w'周围缺少的捕获组。 '\ w'也应该允许使用下划线,也可以使用非拉丁字符,所以你的正则表达式不是等价的。 – amon 2012-07-27 23:25:14
@amon:缺少捕获组?它用于'test',所以没有区别。 – Ryan 2012-07-27 23:28:03
谢谢。我仍然得到测试失败。我修改了这个问题。 – user1558887 2012-07-28 00:22:28