2016-08-11 47 views
1

我想要檢測URL並在用戶鍵入textarea時用超鏈接替換它。我想測試字符串使用正則表達式的網址:正則表達式來檢測沒有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); 

它工作正常的與OT參數的URL沒有HTTP(S),但無法識別的網址不包含http和www例如abc.com或anc.com/fgdg/dgd或abc.com?lklkj=kjhkjh

更新

基於由epascarello和答案的評論通過Ali Khan

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:// |)(www。|)[a-zA-Z0-9] +(\。[a-zA-Z] + )+。*)$」 –

相關問題