与javascript正则表达式匹配的防弹URL?

与javascript正则表达式匹配的防弹URL?,javascript,regex,url,Javascript,Regex,Url,有谁能帮我找到一个正则表达式模式来匹配任何和所有的URL模式吗?我找到了一些,但它们似乎有缺陷 我对匹配URL中的任何单个元素(如域或诸如此类)并不感兴趣,我只需要从文本字符串中可靠地提取一个完整的URL,然后输出一个可用的URL(这意味着它前面应该始终有一个http://链接) 下面是我想匹配的示例URL http://www.google.com www.google.com code.google.com http://code.google.com/hosting/search?q=la

有谁能帮我找到一个正则表达式模式来匹配任何和所有的URL模式吗?我找到了一些,但它们似乎有缺陷

我对匹配URL中的任何单个元素(如域或诸如此类)并不感兴趣,我只需要从文本字符串中可靠地提取一个完整的URL,然后输出一个可用的URL(这意味着它前面应该始终有一个http://链接)

下面是我想匹配的示例URL

http://www.google.com
www.google.com
code.google.com
http://code.google.com/hosting/search?q=label%3aPython
请注意,其中一些缺少http://标记,因此如果缺少,我希望添加这些标记

函数的最终结果应该是

1: http://www.google.com
2: http://www.google.com
3: http://code.google.com
4: http://code.google.com/hosting/search?q=label%3aPython
以下是我的建议:

<script>
var html = 'http://www.google.com';
html += '\rwww.google.com ';
html += '\rcode.google.com';
html += '\rhttp://code.google.com/hosting/search?q=label%3aPython';
var regex = /(https?:\/\/)?(\w+\.?)+(\/[a-zA-Z0-9\?%=_\-\+\/]+)?/gi;
alert('before replace:');
alert(html);
html = html.replace(regex, function (match, capture) {
    if (capture) {
        return match
    }
    else {
        return 'http://' + match;
    }
});
alert('after replace:');
alert(html);
</script>

var html='1〕http://www.google.com';
html+='\rwww.google.com';
html+='\rcode.google.com';
html+='\rhttp://code.google.com/hosting/search?q=label%3aPython';
var regex=/(https?:\/\/)(\w+\.?)+(\/[a-zA-Z0-9\?%=\u\-\+\/]+)?/gi;
警报(“更换前:”);
警报(html);
html=html.replace(正则表达式,函数(匹配,捕获){
如果(捕获){
复赛
}
否则{
返回'http://'+匹配;
}
});
警报(“替换后:”);
警报(html);

您将如何处理返回的URL?您将不得不使用一个松散的正则表达式来容纳您的示例,但是通过使用ajax对近似的URL验证它是否有效,可以增强信心。我实际上要将结果包装在BBCODE中,即[URL]str.match(/(http:\/\/)([a-zA-Z0-9\-]*\){1,}[a-zA-Z0-9\?%=\U\-\+/]*/g)