ユーザーがテキストエリアを入力すると、URLを検出してハイパーリンクに置き換えようとしています。私は、URLが正規表現を使用するための文字列をテストしようとしています:httpまたはwwwを除いたURLを検出する正規表現
var text='gggg.com/gd/';
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var text1=text.replace(exp, "<a href='$1'>$1</a>");
var exp2 =/(^|[^\/])(www\.[\S]+(\b|$))/gim;
var finalText=text1.replace(exp2, '$1<a target="_blank" href="http://$2">$2</a>');
alert(finalText);
それは、HTTP(S)なしOTとのパラメータを持つURLに正常に動作しますが、httpと、例えばWWWなしのURLを認識できませんabc.comまたはanc.com/fgdg/dgdまたはAli Khanによってepascarelloによってコメントと回答に基づいてabc.com?lklkj=kjhkjh
更新
:
var text='gggg.com?klk=efhjsk';
var exp2 = '^([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+.*)$';
var pattern1 = /^([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+.*)$/;
if(pattern1.test(text) && text.substr(0,3)!='www'){
var finalText = '<a href="'+text+'" target="_blank">'+text+'</a>';
}else{
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var text1=text.replace(exp, "<a href='$1'>$1</a>");
var exp2 =/(^|[^\/])(www\.[\S]+(\b|$))/gim;
var finalText=text1.replace(exp2, '$1<a target="_blank" href="http://$2">$2</a>');
}
alert(finalText);
あなたの正規表現にはそれが必要なので、その部分を条件付きにする必要があります。 – epascarello
だから、最初にパターンabc.xyzをチェックし、そうでなければ残りのパターンをチェックする必要がありますか? – gentrobot