Je recherche une expression régulière autorisant les caractères alphanumériques, -, _ ou les espaces dans JavaScript/jQuery. J'ai essayé Google mais je n'ai pas réussi à le trouver.
Quelqu'un peut-il m'aider avec cela?
Merci d'avance.
Essayez cette regex:
/^[a-z\d\-_\s]+$/i
Jeux de caractères aidera une tonne ici. Vous souhaitez créer un jeu de correspondance pour les caractères que vous souhaitez valider:
\w
, identique à [A-Za-z0-9_]
en JavaScript (d'autres langues peuvent être différentes).-
et des espaces, qui peuvent être combinés dans un ensemble correspondant tel que [\w\- ]
. Cependant, vous voudrez peut-être envisager d'utiliser \s
au lieu du simple caractère d'espace (\s
correspond également aux tabulations et autres formes d'espaces) -
en tant que \-
afin que le moteur des expressions rationnelles ne le confonde pas avec une plage de caractères telle que A-Z
^
et $
La regex complète que vous recherchez probablement est:
/^[\w\-\s]+$/
(Notez que le +
indique qu'il doit y avoir au moins un caractère pour qu'il corresponde; utilisez plutôt un *
, si une chaîne de longueur nulle est également correcte)
Enfin, http://www.regular-expressions.info/ est une référence impressionnante
Points bonus: Cette expression rationnelle ne correspond pas correspond aux alphas non ASCII. Malheureusement, le moteur de regex de la plupart des navigateurs ne prend pas en charge les jeux de caractères nommés, mais il existe certaines bibliothèques pour vous aider avec cela .
Pour les langues/plates-formes prenant en charge les jeux de caractères nommés, vous pouvez utiliser /^[\p{Letter}\d\_\-\s]+$/
.
/^[-\w\s]+$/
\w correspond à lettres, chiffres et underscores
\s correspond à spaces, tabs et sauts de ligne
- correspond au trait d'union (si vous avez un tiret dans votre exemple de jeu de caractères [a-z], assurez-vous de placer le trait d'union au début, comme suit [-a-z])
var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)
var regex = new RegExp("^[A-Za-z0-9? ,_-]+$");
var key = String.fromCharCode(event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
dans regExp [A-Za-z0-9?spaceHere,_-]
, il y a un espace littéral après le point d'interrogation '?'. Cela correspond à l'espace. D'autres comme /^[-\w\s]+$/
et /^[a-z\d\-_\s]+$/i
ne travaillaient pas pour moi.
Pour moi, je voulais une regex qui supporte les chaînes précédentes. Fondamentalement, le motif est de supporter le format postal de certains pays étrangers car il devrait être un format alphanumérique avec des espaces autorisés.
J'ai donc fini par écrire un regex personnalisé comme ci-dessous.
/^([a-z]+[\s]*[0-9]+[\s]*)+$/i
Ici, j'ai donné * dans [\s]*
car il n'est pas obligatoire d'avoir un espace. Un code postal peut contenir ou non un espace dans mon cas.