Большинство реализаций регулярных выражений поддерживают классы именованных символов:
^[[:alnum:]]+( [[:alnum:]]+)*$
Вы можете быть умным, хотя и немного менее понятным, и упростите это до:
^([[:alnum:]]+ ?)*$
К вашему сведению, второй допускает паразитный пробел в конце строки. Если вы не хотите эту палку с первым регулярным выражением.
Также, как говорили другие авторы, если [[:alnum:]]
не работает для вас, вы можете использовать [A-Za-z0-9]
.