私はDaring Fireball から Liberal URL Regex を採用し、それをAlan Storm の改善点のいくつかとマージし、括弧内の IDN 文字のサポートなどのいくつかのバグを修正する方法をハックしました。これは私が持っているものです:
/(?:[\w-]+:\/\/?|www[.])[^\s()<>]+(?:(?:\([^\s()<>]*\)[^\s()<>]*)+|[^[:punct:]\s]|\/)/
ただし、解決できないバグに遭遇しました。
'www.dsd(sd)sdsd.com' // can also be the valid 'www.dsd.com/whatever(whatever)'
上記の URL は(または) ではなく (または )としてwww.dsd(sd)sdsd.com'
認識されています。これは、次の URL から、URL に括弧が含まれている場合にのみ発生するようです:www.dsd.com/whatever(whatever)'
www.dsd(sd)sdsd.com
www.dsd.com/whatever(whatever)
'www.sampleurl.com'
として正しく認識されていwww.sampleurl.com
ます。
URLに括弧が含まれている場合、正規表現の[^[:punct:]\s]|\/
一部が実行されていないと思います。しばらく試してみましたが、解決策が見つからないようです。誰でも私を助けることができますか?
商品については、正規表現といくつかのテスト データを使用してRubular パーマリンクを設定しました(最後の URL は失敗します)。
Gruber の正規表現は少し急いでいたと思います。たとえば、次のような URL と一致しません。
http://en.wikipedia.org/wiki/Something_(Special)_For_You
GruberとAlanの両方がこの本当に単純なタイプミスを見逃しているのを見て、私はさらに感銘を受けました。
\([\w\d]+\)
\(\w+\)
十分ではないでしょうか?:S