在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