コード マッチングを構築し、いくつかの種類のパターン (bbCode) を置き換えています。私が作ろうとしている一致の 1 つは、[url=http:example.com] をすべてアンカー リンクに置き換えることです。また、プレーンテキストの URL を一致させてアンカー リンクに置き換えようとしています。そして、これら2つの組み合わせで、私はいくつかの問題に直面しています.
私のルーチンは再帰的であり、実行ごとにテキスト全体を照合して置換するため、アンカーに既に含まれている URL を置換しないと問題が発生します。
これは私が実行している再帰ルーチンです:
if(text.search(p.pattern) !== -1) {
text = text.replace(p.pattern, p.replace);
}
これは、これまでのプレーン URL の正規表現です。
/(?!href="|>)(ht|f)tps?:\/\/.*?(?=\s|$)/ig
また、URL は http または https または ftp または ftps で始まり、空白または句読点 (. / ! / ? / ,) で終わる任意のテキストをその後に含めることができます。
明確にするために、これを一致のテストとして使用しています。
一致する必要があります:
- http://www.example.com
- http://www.example.com/test
- http://example.com/test
- www.example.com/test
一致してはならない
- <a href="http://www.example.com"> http://www.example.com </a>
- <a href="http://www.example.com/test"> http://www.example.com/test </a>
- <a href="http://example.com/test"> http://example.com/test </a>
- <a href="www.example.com/test">www.example.com/test </a>
ここで得られる助けがあれば、本当に感謝しています。
EDIT 以下の jkshah によって最初に受け入れられた解決策には、いくつかの欠陥があります。たとえば、それは一致します
<img src="http://www.example.com/test.jpg">
ただし、ジェリーのソリューションのコメントにより、もう一度試してみたいと思いました。そのソリューションは、この問題も解決しました。したがって、代わりにその解決策を受け入れました。これについてのあなたの親切な助けに感謝します。:)