我想检查字符串是否包含使用javascript的网址我从谷歌获取此代码
if(new RegExp("[a-zA-Z\d]+://(\w+:\w+@)?([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"不起作用。我也想从字符串中提取该网址,以便我可以处理该网址。
答案 0 :(得分:11)
尝试:
if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(status_text)) {
alert("url inside");
}
答案 1 :(得分:1)
您可以修改正则表达式以有条件地匹配URL的方案,如下所示:
var urlCheck = new RegExp('([a-zA-Z\d]+://)?(\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?', 'i')
if (urlCheck.test(status_text) {
console.log(urlCheck.exec(status_text));
}
答案 2 :(得分:1)
Sudhir的回答(对我而言)匹配了网址的结尾。
这是我的正则表达式,以防止匹配超过网址的结尾。
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_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?([^ ])+");
str.match(urlRE)
使用node.js生成此输出:
[ '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.' ]
答案 3 :(得分:0)
尝试这个
(?<http>(http:[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*)
答案 4 :(得分:0)
var reg = new RegExp('([a-zA-Z\d]+://)?((\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?)', 'i')
if (reg.test(status_text)) {
alert(reg.exec(status_text)[2]);
}