En résumé
Il suffit d'ajouter un espace dans votre classe de caractères .
^[a-zA-Z0-9_ ]*$
Maintenant, si tu veux être strict...
Ce qui précède n'est pas tout à fait exact. En raison du fait que *
signifie zéro ou plus il correspondrait à tous les cas suivants que l'on n'aurait pas l'intention de correspondre habituellement :
- Une chaîne vide, "".
- Une chaîne de caractères composée uniquement d'espaces, " ".
- Une chaîne de caractères qui commence et / ou se termine par des espaces, " Hello World ".
- Une chaîne qui contient plusieurs espaces entre les mots, "Hello World".
À l'origine, je ne pensais pas que de tels détails valaient la peine d'être abordés, car le PO posait une question tellement basique qu'il semblait que la rigueur n'était pas une préoccupation. Cependant, maintenant que la question a gagné en popularité, je tiens à dire...
Ce qui, dans mon goût (sans utiliser \w
) se traduit par :
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(S'il vous plaît upvote @stema quand même.)
Quelques éléments à noter concernant cette réponse (et celle de @stema) :
-
Si vous voulez permettre multiple des espaces entre les mots (par exemple, si vous souhaitez autoriser les doubles espaces accidentels, ou si vous travaillez avec du texte copié-collé à partir d'un PDF), puis ajoutez une balise +
après l'espace :
^\w+( +\w+)*$
-
Si vous souhaitez autoriser les tabulations et les nouvelles lignes (caractères d'espacement), remplacez l'espace par un caractère \s+
:
^\w+(\s+\w+)*$
Je suggère ici le +
par défaut car, par exemple, les sauts de ligne de Windows sont constitués de deux les caractères d'espacement en séquence, \r\n
vous aurez donc besoin du +
pour attraper les deux.
Cela ne fonctionne toujours pas ?
Vérifiez le dialecte des expressions régulières que vous utilisez. * Dans des langages comme Java, vous devrez échapper vos antislashes, c'est-à-dire \\w
y \\s
. Dans les langages et les utilitaires plus anciens ou plus basiques, tels que sed
, \w
y \s
ne sont pas définis, alors écrivez-les avec des classes de caractères, par exemple [a-zA-Z0-9_]
y [\f\n\p\r\t]
respectivement.
* Je sais que cette question est étiquetée vb.net mais si l'on se base sur plus de 25 000 vues, j'imagine qu'il n'y a pas que ces personnes qui se posent cette question. Actuellement, c'est le premier résultat sur Google pour la phrase de recherche, expression régulière mot espace .