正则表达式查找不在标签中的URL

时间:2011-11-07 15:54:02

标签: javascript regex url

我正在打破这个问题:

我正在尝试使用正则表达式在Javascript中查找网址。

更新:我在服务器端使用Javascript,因此我无法浏览DOM

(http:\/\/|https:\/\/|)(www\.)([a-zA-Z0-9]+\.[a-zA-Z0-9\-]+|[a-zA-Z0-9\-]+)\.[a-zA-Z\.]{2,6}(\/[a-zA-Z0-9\.\?=\/#%&\+-]+|\/|)/gi

以上样本效果很好。 但是我需要更改在href="url"中找不到Url的正则表达式,而不是在<a ....>url</a>中,而是在<p ...>url</p><div ....>text text text url, url, url text text</div>

之类的其他内容中

有人可以帮忙吗?

谢谢你和欢呼 迈克尔

1 个答案:

答案 0 :(得分:0)

如果您允许非href url成为元素的文本,那会更简单。 根据需要,你需要避免a元素的任何子节点,以防你有一个像跨栏中的文本或强大的或任何a的孩子。

   function someurls(node){
        var A= [], tem, rx=/^https?\:\/\/[^\s]+/g;
        if(node){
            node= node.firstChild;
            while(node && node.tagName== 'A') node= node.nextSibling;
            while(node!= null){
                if(node.nodeType== 3){
                    if((tem= node.data.match(rx))!= null) A[A.length]= tem;
                }
                else A= A.concat(someurls(node));
                node= node.nextSibling;
                while(node && node.tagName== 'A') node= node.nextSibling;
            }
        }
        return A;
    }

// 警报(someurls(document.body的)。加入( '\ n')