テキスト内のhttpURLをアンカータグに変換するために使用される次のコードがあります。空白(または入力の開始/終了)で囲まれたhttpで始まるものを探しています
function linkify (str) {
var regex = /(^|\s)(https?:\/\/\S+)($|\s)/ig;
return str.replace(regex,'$1<a href="$2" target="_blank">$2</a>$3')
}
// This works
linkify("Go to http://www.google.com and http://yahoo.com");
// This doesn't, yahoo.com doesn't become a link
linkify("Go to http://www.google.com http://yahoo.com");
それが機能しないのは、2つのリンクの間にスペースが1つしかない場合です。これは、2つのリンクの間のスペースを使用して両方のURLを一致させることができないためだと思います。最初の一致後、URLの後のスペースはすでに消費されています。
遊ぶには:http://jsfiddle.net/NgMw8/
誰かがこれを行う正規表現の方法を提案できますか?文字列を自分でスキャンして、正規表現の方法を探すことができます(または、自分で文字列をスキャンして自分で新しい文字列を作成する必要のない方法を探します。