tl; dr
Basta adicionar um espaço na sua classe de personagem .
^[a-zA-Z0-9_ ]*$
Agora, se você quer ser rigoroso ...
O exposto acima não é exatamente correto. Devido ao fato de *
significar zero ou mais , ele corresponderia a todos os seguintes casos que normalmente não significariam corresponder:
- Uma sequência vazia, "".
- Uma sequência composta inteiramente de espaços "".
- Uma sequência que leva e / ou arrasta com espaços, "Hello World".
- Uma sequência que contém vários espaços entre as palavras, "Hello World".
Originalmente, eu não achava que esses detalhes valiam a pena, pois a OP fazia uma pergunta tão básica que parecia que o rigor não era uma preocupação. Agora que a pergunta ganhou popularidade, no entanto, quero dizer ...
Que, no meu sabor (sem usar \w
) se traduz em:
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$
(Por favor, vote @stema independentemente.)
Algumas coisas a serem observadas sobre essa resposta (e da @ stema):
Se você deseja permitir vários espaços entre as palavras (por exemplo, se você deseja permitir espaços duplos acidentais ou se estiver trabalhando com texto colado em um PDF), adicione um +
após o espaço:
^\w+( +\w+)*$
Se você deseja permitir guias e novas linhas (caracteres de espaço em branco), substitua o espaço por \s+
:
^\w+(\s+\w+)*$
Aqui, sugiro o +
padrão por que, por exemplo, as quebras de linha do Windows consistem em dois caracteres de espaço em branco em sequência \r\n
, portanto, você precisará +
capturar os dois.
Ainda não funciona?
Verifique qual dialeto de expressões regulares você está usando. * Em linguagens como Java, você terá que escapar de suas barras invertidas, ou seja , \\w
e \\s
. Em linguagens e utilitários mais velhos ou mais básicos, como sed
, \w
e \s
não estão definidos, assim escrevê-los com classes de personagens, por exemplo, [a-zA-Z0-9_]
e [\f\n\p\r\t]
, respectivamente.
* Eu sei que esta pergunta está marcadavb.net, mas com base em mais de 25.000 visualizações, acho que não são apenas as pessoas que se deparam com essa pergunta. Atualmente, é o primeiro hit no google para a frase de pesquisa, palavra do espaço de expressão regular .