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

时间:2013-07-17 02:17:07

标签: javascript regex url

任何人都可以帮我找到一个匹配任何和所有网址模式的正则表达式模式,我发现了一对,但它们似乎有缺陷。

我真的不想匹配URL中的任何单个元素(例如域或诸如此类),我只需要从文本字符串中可靠地提取URL,然后输出可用的URL(意味着它应该总是有一个http://在前面)

以下是我想要匹配的示例网址

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

1 个答案:

答案 0 :(得分:1)

这是我的建议:

<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>