このサイトで非常に優れたURL正規表現マッチャーを見つけました:http://daringfireball.net/2010/07/improved_regex_for_matching_urls。自由に使用でき、言語間で互換性がある(Javascriptを含む)と記載されています。まず、コンパイルするにはスラッシュをいくつかエスケープする必要があります。これを行うと、Rubular.com(通常は正規表現をテストします)で正常に機能しますが、各一致に5つのフィールドがあるという奇妙な副作用があります。1つはURLで、余分な4つは空です。これをJSに入れると、「InvalidGroup」というエラーが表示されます。違いがあればNode.jsを使用していますが、そのエラーを理解できればと思います。不要な空の一致フィールドを減らしたいのですが、この獣の診断をどこから始めればよいのかさえわかりません。これは私が逃げた後に持っていたものです:
(?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`!()\[\]{};:'".,<>?«»“”‘’] ))