javascript 正则表达式否定检测 Url 不包含给定域

javascript regex negation detect Url NOT containing given domain

我需要检查一些 html 文件并提取未引用 2 个网站的 urls

经过多次测试,我得到了这个

/(http|https)?:?(\/\/)\w*\.*\-*[^(mysite.com)]\w*\.?\S*/igm

效果不错..但不完美:

例如,可以看到HERE on regexr.com 它匹配

// End

但不是

www.demo.com

while应该是country,但是在(\/\/)后面加了一个?就变成了一个不常用的"catch all"

并且如果 url 在开头和结尾都有一个 ",这显然经常发生 不抓开始"(正确)但抓结束一个(错误)

最后它不应该也匹配 theothermysite.net 但很好理解如何处理 OR 与否定 :-(

可以帮忙吗?

喜欢this?

/((http|https):(\/\/)|www\.)\w*\.*\-*[^(mysite.com)(theothermysite.net)]\w*\.?[^\s\t\r\n\"]*/igm

我刚刚添加了一个 "or www",用它的组件加上 \" 替换了 \S,并向否定中添加了另一个原子组,就像您已经对 mysite.com[= 所做的那样15=]