【问题标题】:How to remove a pattern in JS Regex?如何删除 JS 正则表达式中的模式?
【发布时间】:2017-10-07 23:43:47
【问题描述】:

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

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,/ 正则表达式可能与 .com 或 co.uk 之类的 tld 不匹配,并且警报中只会出现“域”,但我不知道如何将此类正则表达式应用于确认中的 sites[i]。

你知道吗?

【问题讨论】:

    标签: javascript regex alert confirm


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 2019-02-16
        • 2019-08-20
        • 1970-01-01
        相关资源
        最近更新 更多