-1

谁能帮我找到一个匹配任何和所有 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
4

1 回答 1

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>
于 2013-07-17T03:14:10.767 回答