如何删除JS Regex中的模式?

时间:2017-10-07 23:43:47

标签: javascript regex alert confirm

以下代码隐藏了某个网站的所有网页并嘲笑了该网站。

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:

  

“足够这个domain.tld垃圾!”。

我怎样才能剥离.tld,所以最后的结果将是:

  

“这个域垃圾够了!”。

/[domain]@.2,/正则表达式可能与.comco.uk不匹配,只有“域”会出现在警报上,但我不知道如何将这种正则表达式实现到{ {1}}在确认中。

你知道吗?

2 个答案:

答案 0 :(得分:0)

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

&#13;
&#13;
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!");
&#13;
&#13;
&#13;

答案 1 :(得分:0)

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

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

这适用于“domain.com”,“domain.co.uk”,“domain.es”的大多数示例。你可能能找到一个更好的正则表达式,但想法是一样的。