2017-10-07 5 views
0

Le code suivant masque toutes les pages Web d'un certain site Web et se moque du site Web.Comment supprimer un motif dans 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! `); 
    } 
} 

Il affiche domain.tld cette façon: "Assez avec cette merde de domain.tld"

.

Comment pourrais-je Dépouiller le .tld, de sorte que le résultat final serait la suivante:

"Assez avec cette merde de domaine!".

Un /[domain]@.2,/ regex pourrait UNMATCH de tld comme .com ou co.uk et seulement « domaine » apparaît sur l'alerte, mais je ne sais pas comment mettre en œuvre cette regex au sites[i] dans la confirmation.

Le savez-vous?

Répondre

0

Cela dépend de la complexité de vos chaînes peut obtenir, mais une correspondance simple pour les domaines pourrait être quelque chose comme suit:

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

Ce w mauvais travail pour la plupart des exemples de "domain.com", "domain.co.uk", "domain.es". Vous pourriez être en mesure de trouver une meilleure regex, mais l'idée serait la même.

0

besoin de dire que c'est un long chemin et laid, mais je veux vous montrer qu'il est possible sans regex:

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