J'ai utilisé le RegEx /[ -~]/i
en JavaScript pendant un moment maintenant et a constaté que cela fonctionne bien pour tester tout Caractère ASCII incluant l'espace. Aujourd'hui j'ai accidentellement utilisé /^[ -~]$/i
et trouvé beaucoup à ma grande surprise que /^[ -~]$/i.test("Stackoverflow is great")
échoué en raison du caractère d'espace. Ma compréhension des regexes est plutôt limitée, mais malgré tout, je ne vois pas ce que je fais mal ici. Peut-être que quelqu'un ici peut nous éclairer sur ce qui se passe?
Réponses:
4 pour la réponse № 1Vous manquez un quantificateur, un +
ou *
:
alert(/^[ -~]*$/i.test("Stackoverflow is great"));
Sans le quantificateur, une classe de caractères correspond juste 1 symbole. Vous avez besoin de ce quantificateur dans ce cas car vous avez ajouté des ancres qui doivent être appariées au début de la chaîne (^
) et à la fin de la chaîne ($
).
Notez que *
veux dire faire correspondre 0 ou plusieurs occurrences du sous-modèle précédent, et +
correspond à 1 ou plusieurs occurrences.
Et c'est vrai pour ce qui correspond à votre expression rationnelle car le trait d'union crée une plage entre un espace et un tilde: