<script type="text/javascript">
var v = "www.abc.com"
var reg=/((ht|f)tp(s|))?(\:\/\/)?[\-\w.:]+(\/[^ \n\r\'\"\[\]]+|)/gi;
v=v.replace(reg,s);
alert(v);
function s(x){
return "<a href="+x+">"+x+"</a>"
}
</script>试了一下这种方法。当var v = "DOCTYPE html PUBLIC"时,不正确。有没有其他办法。

解决方案 »

  1.   

        var v = "www.abc.com/aa DOCTYPE html PUBLIC"
        var reg = /((ht|f)tps?\:\/\/)?[^\.]+(\.[^\.\s]+)+/gi;
        v = v.replace(reg, s);
        alert(v);
        function s(x) {
            if (!/^(ht|f)tps?\:\/\//i.test(x)) x = 'http://' + x;
            return "<a href=" + x + ">" + x + "</a>"
        }
      

  2.   


    不好意思。还是有点缺陷。
    输入
    var v = "<a href=baidu.com>baidu.com</a> com DOCTYPE html PUBLIC"
    输出
    <a href=http://<a href=baidu.com>baidu.com</a>>http://<a href=baidu.com>baidu.com</a></a> com DOCTYPE html PUBLIC文本中可能有a标签.
      

  3.   

        var v = "<a href=baidu.com>baidu.com</a> coding123.net com DOCTYPE html PUBLIC"
        ,reg = /((ht|f)tps?\:\/\/)?[^\.\s]+(\.[^\.\s]+)+/gi
        , as = []
        //收集as标签替换为替代的特殊字符串
        v = v.replace(/<a[^>]+>[\s\S]*?<\/a>/ig, function ($0) { as[as.length] = $0; return '__AS' + (as.length - 1) + '__' });
        v = v.replace(reg, s); 
        //反替换回来
        for (var i = 0, j = as.length; i < j; i++) v = v.replace(new RegExp('__AS' + i + '__', 'g'), as[i]);
        alert(v);
        function s(x) {
            return "<a href=" +(/^(ht|f)tps?\:\/\//i.test(x)?x:'http://'+ x) + ">" + x + "</a>"
        }