テキストにURL文字列が含まれているかどうかを確認するにはどうすればよいですか?私はテキストにURL文字列が含まれているかどうかを確認する方法
Sometexthttp://daasddas some text
を持っている場合、私は私がhttp://daasddasがachoredまたはあなたがテキストのブロックにURLパターンを見つけるために、正規表現(正規表現)を使用する必要がjavascriptの
テキストにURL文字列が含まれているかどうかを確認するにはどうすればよいですか?私はテキストにURL文字列が含まれているかどうかを確認する方法
Sometexthttp://daasddas some text
を持っている場合、私は私がhttp://daasddasがachoredまたはあなたがテキストのブロックにURLパターンを見つけるために、正規表現(正規表現)を使用する必要がjavascriptの
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>");
}
リンクウィットとして集約したことにしたいわけ。
ここで同じ質問と回答へのリンクです: Regular Expression to find URLs in block of Text (Javascript)
URLを見つけ、大手と同じで、それを置き換えるために、正規表現を使用することができますし、末尾のタグ
ながら上記のコードは、すべての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;
を!
しかし、誰かがmydomain.comを入力した場合、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でそれをテストし、それはあなたが、問題が発生した場合、コメントしてください、私のために働きました。
これは何ですか? –
最高の答え大きな助け – Grenter