2
votes

Javascript regex pour remplacer les nombres dans l'ordre

J'essaie de remplacer les nombres en chaîne par le caractère "X" qui fonctionne plutôt bien en remplaçant chaque nombre individuel.

Voici le code:

 let htmlStr = initialString.replace(/[0-9]/g, "X");

Donc, dans un scénario où initialString = "p3d8" la sortie serait "pXdX"

Le but est de remplacer une séquence de nombres par un seul "X" et non chaque nombre (dans la séquence) individuellement. Par exemple:

Si initialString = "p348" , avec le code ci-dessus, la sortie serait "pXXX". Comment puis-je le rendre "pX" - définir un "X" pour la séquence des nombres entiers.

Est-ce faisable via regex?

Toute aide serait la bienvenue


3 commentaires

Ajoutez + après [0-9] .


Vous devriez lire un tutoriel sur les expressions rationnelles, c'est l'un des modèles les plus basiques.


Si vous avez considérablement modifié votre question ou si les réponses n'ont pas fonctionné pour vous, veuillez commenter et tenir la communauté au courant.


3 Réponses :


5
votes

Essayez

let htmlStr = "p348".replace(/[0-9]+/g, "X");
let htmlStr2 = "p348ad3344ddds".replace(/[0-9]+/g, "X");

let htmlStr3 = "p348abc64d".replace(/\d+/g, "X");

console.log("p348           =>",htmlStr);
console.log("p348ad3344ddds =>", htmlStr2);
console.log("p348abc64d     =>", htmlStr3);

Dans l'expression rationnelle, le \ d est équivalent à [0-9] , le plus + signifie que nous correspondons à au moins un chiffre (nous faisons donc correspondre toute la séquence de chiffres consécutifs). Plus d'informations ici ou un film de mécanisme d'expression régulière ici .


0 commentaires

3
votes

Vous pouvez utiliser + après [0-9] Il correspondra à n'importe quel nombre (pas 0) de nombre. Vérifiez Quantificateurs . pour plus d'informations

let initialString = "p345";
let htmlStr = initialString.replace(/[0-9]+/g, "X");
console.log(htmlStr);


3 commentaires

Il correspondra à n'importe quel nombre. plus précisément, il devrait en être au moins un


@Code Maniac qu'est-ce que tu veux dire?


+ signifie un ou plusieurs. any peut également être égal à zéro



0
votes

Utilisez le jeton \ d pour faire correspondre tous les chiffres combinés avec + pour faire correspondre un ou plusieurs. Terminer l'expression régulière par g , le modificateur global, fera que l'expression régulière recherchera toutes les correspondances et ne s'arrêtera pas sur la première correspondance.

Voici un bon outil en ligne pour travailler avec regex.

const maskNumbers = str => str.replace(/\d+/g, 'X');

console.log(maskNumbers('abc123def4gh56'));


0 commentaires