268 votes

Expression régulière pour autoriser les espaces entre les mots

Je veux une expression régulière qui empêche les symboles et n'autorise que les lettres et les chiffres. L'expression régulière ci-dessous fonctionne très bien, mais elle ne tient pas compte des espaces entre les mots.

^[a-zA-Z0-9_]*$

Par exemple, lorsque vous utilisez cette expression régulière, "HelloWorld" convient, mais "Hello World" ne correspond pas.

Comment puis-je le modifier pour autoriser les espaces ?

6voto

Amadeus Sánchez Points 902

Cette expression régulière

^\w+(\s\w+)*$

n'autorisera qu'un seul espace entre les mots, sans espace avant ni arrière.

Vous trouverez ci-dessous l'explication de l'expression régulière :

  1. ^ Assert position au début de la chaîne
  2. \w+ Correspond à tout caractère de mot [a-zA-Z0-9_]
    1. Quantificateur : + Entre une et un nombre illimité de fois, autant de fois que possible, en redonnant selon les besoins [gourmand].
  3. 1er groupe de capture (\s\w+)*
    1. Quantificateur : * Entre zéro et un nombre illimité de fois, autant de fois que possible, en redonnant selon les besoins [gourmand].
    2. \s Correspond à tout caractère d'espace blanc [\r\n\t\f ]
    3. \w+ Correspond à tout caractère de mot [a-zA-Z0-9_]
      1. Quantificateur : + Entre une et un nombre illimité de fois, autant de fois que possible, en redonnant selon les besoins [gourmand].
  4. $ Assert position à la fin de la chaîne

6voto

KayV Points 3131

Il suffit d'ajouter un espace à la fin de votre modèle regex comme suit :

[a-zA-Z0-9_ ]

3voto

jaxxbo Points 339

Cela ne permet pas d'avoir de l'espace au début. Mais autorise les espaces entre les mots. Elle autorise également les caractères spéciaux entre les mots. Une bonne expression rationnelle pour les champs FirstName et LastName.

\w+.*$

2voto

bibliophilsagar Points 1128

Pour les alphabets uniquement :

^([a-zA-Z])+(\s)+[a-zA-Z]+$

Pour les valeurs alphanumériques et _ :

^(\w)+(\s)+\w+$

2voto

Milad ranjbar Points 71

Si vous utilisez JavaScript, vous pouvez utiliser cette regex :

/^[a-z0-9_.-\s]+$/i

Par exemple :

/^[a-z0-9_.-\s]+$/i.test("") //false
/^[a-z0-9_.-\s]+$/i.test("helloworld") //true
/^[a-z0-9_.-\s]+$/i.test("hello world") //true
/^[a-z0-9_.-\s]+$/i.test("none alpha: q") //false

Le seul inconvénient de cette regex est une chaîne entièrement composée d'espaces. " " sera également affiché comme vrai.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X