2012-05-13 59 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.' ]