如何删除 JS 正则表达式中的模式?

How to remove a pattern in JS Regex?

以下代码隐藏某个网站的所有网页并模拟该网站。

let sites = ['mako.co.il', 'walla.co.il'];

for (let i = 0; i < sites.length; i++) {
    if (window.location.href.indexOf(sites[i]) != -1 ) {

    alert(` Enough with this ${sites[i]} garbage! `);
    }
}

这样显示domain.tld:

"Enough with this domain.tld garbage!".

我怎么去掉.tld,所以最后的结果是:

"Enough with this domain garbage!".

A /[domain]@.2,/ 正则表达式可能与 .comco.uk 之类的 tld 不匹配,并且只有 "domain" 会出现在警报中,但我不知道如何实现这样的确认中 sites[i] 的正则表达式。

你知道吗?

需要说的是,这是一个漫长而丑陋的方式,但我想告诉你,没有正则表达式也是可能的:

function splitDomain(str) {
  var beforeDomain = str.split(" domain");
  var afterDomain = beforeDomain[1].split(" ").splice(1, 1);
  beforeDomain.splice(1, 1);
  beforeDomain.push("domain")
  afterDomain.forEach(function(item) {
    beforeDomain.push(item);
  })
  var final = beforeDomain.join(" ")
  console.log(final);
}

splitDomain("Enough with this domain.tld shit!");
splitDomain("Enough with this domain.co.uk shit!");
splitDomain("Enough with this domain.com shit!");

这取决于您的字符串的复杂程度,但域的简单匹配可能如下所示:

str.replace(/(\.[a-zA-Z]{1,3}){1,2}/, '')

这适用于 "domain.com"、"domain.co.uk"、"domain.es" 的大多数示例。您也许可以找到更好的正则表达式,但思路是一样的。