我在這個網站上發現了一個非常漂亮的URL正則表達式匹配器:http://daringfireball.net/2010/07/improved_regex_for_matching_urls。它聲明它可以自由使用,並且它與跨語言兼容(包括Javascript)。首先,我必須逃避一些斜線才能編譯它。當我這樣做時,它在Rubular.com上正常工作(我通常測試正則表達式),每個匹配有5個字段的奇怪副作用:1是url,另外4是空的。當我把這個在JS中,我得到錯誤「無效組」。我使用Node.js,如果這有什麼區別,但我希望我能理解錯誤。我想減少不必要的空白匹配字段,但我甚至不知道從哪裏開始診斷這個野獸。這是我在轉義之後所得到的:幫助製作「通用」正則表達式Javascript兼容
(?xi)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»「」‘’]))