2011-07-15 11 views

答えて

15
function replaceURLWithHTMLLinks(text) 
    { 
     var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
     return text.replace(exp,"<a href='$1'>$1</a>"); 
    } 
+1

これは何ですか? –

+0

最高の答え大きな助け – Grenter

0

URLを見つけ、大手と同じで、それを置き換えるために、正規表現を使用することができますし、末尾のタグ

3

ながら上記のコードは、すべてのURLがいっぱい(http://mydomain.com)であればうまくいきます。

www.mydomain.com

、つまりプロトコルなし。 だから私は、関数にいくつかの簡単なコードを追加しました:誰かが私に知らせて、URLをデフォルトのプロトコルを追加し、より最適なソリューションを微調整する必要がある場合

var exp = /(\b(((https?|ftp|file|):\/\/)|www[.])[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
var temp = text.replace(exp,"<a href=\"$1\" target=\"_blank\">$1</a>"); 
var result = ""; 

while (temp.length > 0) { 
    var pos = temp.indexOf("href=\""); 
    if (pos == -1) { 
     result += temp; 
     break; 
    } 
    result += temp.substring(0, pos + 6); 

    temp = temp.substring(pos + 6, temp.length); 
    if ((temp.indexOf("://") > 8) || (temp.indexOf("://") == -1)) { 
     result += "http://"; 
    } 
} 

return result; 

を!

+0

しかし、誰かがmydomain.comを入力した場合、1つのケースが残っています –

1

私はdperinis regex-url scriptを微調整して、文字列に埋め込まれたURLを見つけることができました。 google.comを見つけられません。これはユーザー入力フィールドの場合には必要ですが、ユーザーは期間/完全停止後に空白を省略することがあります。 www.google.comもあります。誰もプロトコルを入力することはほとんどないからです。

(?:((?:https?|ftp):\/\/)|ww)(?:\S+(?::\S*)[email protected])?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)? 

私はwww.regextester.comでそれをテストし、それはあなたが、問題が発生した場合、コメントしてください、私のために働きました。

関連する問題