J'essaie de remplacer tous les points dans un e-mail par un caractère x - par exemple, "[email protected]" deviendrait "myxemail @ emailxcom". L'e-mail est défini sur une chaîne.
Mon problème n'est pas de remplacer seulement les points, c'est de remplacer chaque caractère, donc je reçois juste une chaîne de x.
Je peux le faire fonctionner avec un seul point, donc je suppose que je me trompe sur la partie d'instance globale. Voici mon code:
let re = ".";
let new = email.replace(/re/gi, "x");
J'ai aussi essayé
re = /./gi;
new = email.replace(re, "x");
Si quelqu'un peut faire la lumière, je l'apprécierais vraiment, je suis coincé là-dessus depuis si longtemps et je n'arrive pas à comprendre où je me trompe.
** Edit: Oups, ma nouvelle variable s'appelait en fait newemail, le mot clé new n'était pas à l'origine du problème!
Votre deuxième exemple est le plus proche. Le premier problème est le nom de votre variable, new
, qui se trouve être l'un des JavaScript mots-clés réservés ( et est plutôt utilisé pour construire des objets, comme new RegExp
ou new Set
). Cela signifie que votre programme générera une erreur de syntaxe.
De plus, puisque le point (.
) est un caractère spécial dans la grammaire regex, vous devez l'échapper comme \.
. Sinon, vous vous retrouvez avec result == "xxxxxxxxxxxxxxxxxx"
, ce qui n'est pas souhaitable.
let email = "[email protected]"
let re = /\./gi;
let result = email.replace(re, "x");
console.log(result)
Vous pouvez essayer la méthode split()
et join()
qui fonctionnait pour moi. (Pour le texte de chaîne normal) Il était court et simple à mettre en œuvre et à comprendre. Voici un exemple.
let email = "[email protected]";
email.split('.').join('x');
Ainsi, il remplacera tous vos .
avec x
. Ainsi, après l'exemple ci-dessus, la variable email
devient myxemail@gmailxcom