2012-05-13 60 views
4

包含URL字符串中的任何地方我要檢查,如果字符串中包含的網址使用JavaScript我得到這個代碼從谷歌檢查字符串使用JavaScript

 if(new RegExp("[a-zA-Z\d]+://(\w+:\[email protected])?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?").test(status_text)) { 
      alert("url inside"); 
     } 

但它只適用於像"http://www.google.com""http://google.com"但網址它不工作"www.google.com".Also我想從字符串中提取該網址,所以我可以處理該網址。

+0

的可能重複(http://stackoverflow.com/questions/161738/what-is-best-regular-expression-to-check-if-a-string-is-a-valid-url) – user123444555621

+0

@ Pumbaa80:沒有我的問題有點不同,我的意見可能有純字符串,只有網址,或者文字和網址一起。 –

回答

11

嘗試:

if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_][email protected])?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(status_text)) { 
     alert("url inside"); 
} 
+0

這一個工程,但我想檢查一次它的完整鍵入我的意思是...當我鍵入「http://www.go」這個條件滿足並顯示警報...我希望這個腳本等待,直到用戶輸入完整的網址,然後只顯示警報...通過使用keyup事件來檢查。 –

+1

@AmitPatil使用文本框的模糊事件,而不是關鍵,sudhir的答案似乎不提取該網址,順便說一句。 –

+0

你可以使用模糊事件,這樣一旦焦點從文本框中丟失,你就可以運行代碼... –

0

試試這個

(?<http>(http:[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*) 
+0

我不認爲在這裏真的需要單獨匹配'www'。 – YMMD

1

您可以修改正則表達式來有條件地匹配在URL的方案,就像這樣:

var urlCheck = new RegExp('([a-zA-Z\d]+://)?(\w+:\[email protected])?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?', 'i') 
if (urlCheck.test(status_text) { 
    console.log(urlCheck.exec(status_text)); 
} 
0
var reg = new RegExp('([a-zA-Z\d]+://)?((\w+:\[email protected])?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?)', 'i') 
if (reg.test(status_text)) { 
    alert(reg.exec(status_text)[2]); 
} 
1

Sudhir的答案(對我而言)匹配超過網址的末尾。

這是我的正則表達式,以防止匹配超過URL的結尾。

var str = " some text http://www.loopdeloop.org/index.html aussie bi-monthly animation challenge site." 
var urlRE= new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_][email protected])?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?([^ ])+"); 
str.match(urlRE) 

產生:使用Node.js的這種輸出:?什麼是最好的正則表達式來檢查一個字符串是否是一個有效的URL]

[ 'http://www.loopdeloop.org/index.html', 
'http://', 
undefined, 
'www.loopdeloop.org', 
undefined, 
'l', 
index: 11, 
input: ' some text http://www.loopdeloop.org/index.html aussie bi-monthly animation challenge site.' ]