2017-10-07 88 views
0

以下代碼隱藏了某個網站的所有網頁並嘲笑該網站。如何刪除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]} shit! `); 
    } 
} 

它顯示使用domain.tld這樣: 「夠了這種使用domain.tld狗屎」

我怎麼能除掉那些.tld,所以最後的結果將是:

「夠了與此域狗屎!」。

一個/[domain]@.2,/正則表達式可能UNMATCH頂級域名的像.comco.uk,只有「域」將出現在戒備,但我不知道如何實現這樣的正則表達式來在確認了sites[i]

你知道嗎?

回答

0

這取決於多麼複雜的字符串可以得到,但對於域名簡單匹配,可能會是如下:

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

該W對於「domain.com」,「domain.co.uk」,「domain.es」的大多數例子都不合適。你可能能找到更好的正則表達式,但這個想法是一樣的。

0

需要說的,那這是一個漫長而醜陋的方式,但我想告訴你,它是可能沒有正則表達式:

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