J'essaie de remplacer une chaîne de base en utilisant une expression régulière, mais les réponses que j'ai trouvées ne semblent pas aider - elles répondent directement à chaque exigence unique de chaque personne avec peu ou pas d'explication.
J'utilise str = str.replace(/[^a-z0-9+]/g, '');
en ce moment. Mais ce que je voudrais faire, c'est autoriser tous les caractères alphanumériques (a-z et 0-9) ainsi que le caractère "-".
Pourriez-vous s'il vous plaît répondre à cela et expliquer comment vous concaténer des expressions.
Cela devrait fonctionner:
str = str.replace(/[^a-z0-9-]/g, '');
Tout ce qui se trouve entre indique ce que vous cherchez
/
est là pour délimiter votre modèle afin que vous en ayez un pour commencer et un pour terminer[]
indique le motif que vous recherchez sur un caractère spécifique^
indique que vous voulez que chaque caractère ne corresponde pas à ce qui suita-z
correspond à n'importe quel caractère entre 'a' et 'z' inclus0-9
correspond à tout chiffre compris entre "0" et "9" inclus (ce qui signifie tout chiffre)-
le personnageg
à la fin est un paramètre spécial disant que vous ne voulez pas que votre regex s'arrête sur le premier caractère correspondant à votre modèle mais continue sur toute la chaîneEnsuite, votre expression est délimitée par /
avant et après. Donc ici vous dites que "chaque caractère qui n'est pas une lettre, un chiffre ou un" - "sera supprimé de la chaîne".
Changez simplement +
à -
:
str = str.replace(/[^a-z0-9-]/g, "");
Vous pouvez le lire comme:
[^ ]
: ne correspond pas à l'ensemble[^a-z0-9-]
: correspond sinon a-z
, 0-9
ou -
/ /g
: faire une correspondance globalePlus d'informations:
Votre classe de caractères (la partie entre crochets) indique que vous voulez faire correspondre tout sauf 0-9 et a-z et +. Vous n'êtes pas explicite sur le nombre de a-z ou de 0 à 9 que vous souhaitez faire correspondre, mais je suppose que le + signifie que vous voulez remplacer les chaînes d'au moins un caractère alphanumérique. Il faut plutôt lire:
str = str.replace(/[^-a-z0-9]+/g, "");
De plus, si vous devez faire correspondre des lettres majuscules avec des minuscules, vous devez utiliser:
str = str.replace(/[^-a-zA-Z0-9]+/g, "");