正規表現を使用して文字列内の URL を検索し、それらを (JavaScript で) 実際の HTML リンクに変換しています。私の正規表現の問題は、http の前に前の文字が含まれていることです。(最初の配列の 2 番目の正規表現について話しています。)
str = "testhttp://example.com";
search = new Array(
/\[url\](.*?)\[\/url\]/ig,
/(?:[^\]\/">]|^)((https?):\/\/[-A-ZÅÄÖ0-9+&@#\/%?=~_|!:,.;]*[-A-ZÅÄÖ0-9+&@#\/%=~_|])/ig
);
replace = new Array(
'<a href="//$1">$1</a>',
'<a href="$1">$1</a>'
);
for (i = 0; i < search.length; i++) {
str = str.replace(search[i], replace[i]);
}
出力は次のようになります。
tes<a href="http://example.com">http://example.com</a>
しかし、私はそれが欲しい:
test<a href="http://example.com">http://example.com</a>
重要なのは、URL が文字列の先頭にある場合でも、正規表現が URL を検出する必要があることですが、前の文字が次の 3 つの文字のいずれかである場合は検出されません: "/>
私は正規表現にかなり慣れていません。ご理解いただければ幸いです。
ありがとう!