0

此处找到的以下正则表达式与以下域匹配得很好,但我不希望它匹配已经在锚标记中的域(最后一个示例)请注意,此匹配将在文本句子中检测这些情况。

((?: http| https)://)?[.0-9a-z-]+\.[a-z]{2,6}(?::[0-9]{1,5}+)?(?:/[!$'()*+,._a-z-]++){0,9}(?:/[!$'()*+,._a-z-]*)?(?:\?[!$&'()*+,.=_a-z-]*)?

在句子或段落中匹配:

www.domain.com
domain.com
this.is.a.special.url.domain.com/hello 
http://domain.com
http://www.domain.com
http://www.domain.com/
http://www.domain.com/index.html
http://www.domain.com/index.html?source=library

但是,如何将正则表达式更改为与锚标记中已经存在的域不匹配?

<a href="http://www.usertesting.com">hello</a>
4

1 回答 1

1

您可以只添加否定的lookbehind以排除遵循ahref="href='这样的匹配:

(?<!href=["'])((?: http| https)://)?[.0-9a-z-]+\.[a-z]{2,6}(?::[0-9]{1,5}+)?(?:/[!$'()*+,._a-z-]++){0,9}(?:/[!$'()*+,._a-z-]*)?(?:\?[!$&'()*+,.=_a-z-]*)?
于 2013-09-06T01:31:02.837 回答