tl; dr
Aggiungi uno spazio nella tua classe di personaggi .
^[a-zA-Z0-9_ ]*$
Ora, se vuoi essere severo ...
Quanto sopra non è esattamente corretto. A causa del fatto che *
significa zero o più , corrisponderebbe a tutti i seguenti casi che di solito non significherebbe corrispondere:
- Una stringa vuota "".
- Una stringa composta interamente da spazi "".
- Una stringa che conduce e / o trascina con spazi, "Hello World".
- Una stringa che contiene più spazi tra le parole, "Hello World".
Inizialmente non pensavo che valesse la pena approfondire tali dettagli, poiché OP stava ponendo una domanda così fondamentale che sembrava che la rigidità non fosse un problema. Ora che la domanda ha guadagnato un po 'di popolarità, voglio dire ...
Che, nel mio sapore (senza usare \w
) si traduce in:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(Si prega di votare @stema a prescindere.)
Alcune cose da notare su questa risposta (e @ stema):
Se si desidera consentire più spazi tra le parole (ad esempio, se si desidera consentire doppi spazi accidentali o se si sta lavorando con testo incollato da un PDF), quindi aggiungere un +
dopo lo spazio:
^\w+( +\w+)*$
Se si desidera consentire le schede e le nuove righe (caratteri di spazi bianchi), sostituire lo spazio con un \s+
:
^\w+(\s+\w+)*$
Qui ti suggerisco +
di default perché, ad esempio, le interruzioni di riga di Windows sono costituite da due caratteri di spazi bianchi in sequenza \r\n
, quindi dovrai +
prenderli entrambi.
Continua a non funzionare?
Controlla quale dialetto delle espressioni regolari stai utilizzando. * In lingue come Java dovrai sfuggire alle tue barre rovesciate, cioè \\w
e \\s
. In linguaggi e le utility più anziani o più di base, come sed
, \w
e \s
non sono definiti, in modo da scrivere con classi di personaggi, per esempio [a-zA-Z0-9_]
e [\f\n\p\r\t]
, rispettivamente.
* So che questa domanda è taggatavb.net, ma sulla base di oltre 25.000 visualizzazioni, suppongo che non siano solo quelle persone a trovare questa domanda. Attualmente è il primo hit su Google per la frase di ricerca, parola spazio espressione regolare .