tl; dr
Ajoutez simplement un espace dans votre classe de personnage .
^[a-zA-Z0-9_ ]*$
Maintenant, si vous voulez être strict ...
Ce qui précède n'est pas tout à fait correct. Étant donné que cela *
signifie zéro ou plus , cela correspondrait à tous les cas suivants que l'on ne voudrait généralement pas faire correspondre:
- Une chaîne vide, "".
- Une chaîne composée entièrement d'espaces, "".
- Une chaîne qui mène et / ou suit avec 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 approfondis, car OP posait une question si fondamentale qu'il semblait que la rigueur n'était pas un problème. Maintenant que la question a gagné en popularité, je veux dire ...
Ce qui, dans ma saveur (sans utiliser \w
) se traduit par:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(S'il vous plaît, veuillez voter @stema quand même.)
Quelques points à noter à ce sujet (et la réponse de @ stema):
Si vous souhaitez autoriser plusieurs 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), ajoutez un +
après l'espace:
^\w+( +\w+)*$
Si vous souhaitez autoriser les tabulations et les retours à la ligne (caractères d'espacement), remplacez l'espace par un \s+
:
^\w+(\s+\w+)*$
Ici, je suggère le +
par défaut parce que, par exemple, les sauts de ligne Windows se composent de deux caractères d' espacement en séquence, \r\n
vous aurez donc besoin de +
pour attraper les deux.
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 contre-obliques, c'est \\w
-à- dire et \\s
. Dans les langues et les services publics plus âgés ou plus basiques, comme sed
, \w
et \s
ne sont pas définis, afin de les écrire avec des classes de caractères, par exemple [a-zA-Z0-9_]
et [\f\n\p\r\t]
, respectivement.
* Je sais que cette question est taguéevb.net, mais sur la base de plus de 25 000 vues, je suppose que ce ne sont pas seulement ces personnes qui rencontrent cette question. Actuellement, c'est le premier appel sur google pour l'expression de recherche, mot d'espace d'expression régulière .