2016-08-11 3 views
1

ユーザーがテキストエリアを入力すると、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); 
+0

あなたの正規表現にはそれが必要なので、その部分を条件付きにする必要があります。 – epascarello

+0

だから、最初にパターンabc.xyzをチェックし、そうでなければ残りのパターンをチェックする必要がありますか? – gentrobot

答えて

-1

てみてくださいこの

^([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+.*)$ 
+1

これは '123.456'に対してはtrueを返し、' http:// google.com'に対してはfalseを返します。 – Dekel

+0

次の正規表現は、http://、https://、ftp://、wwwを作成します。 (http:// | https:// | ftp:// |)[a-zA-Z0-9] +(\。[a-zA-Z] +オプション) )+。*)$ " –

関連する問題