Какое регулярное выражение я могу использовать, чтобы сопоставить только буквы, цифры и один пробел между каждым словом? - PullRequest
24 голосов
/ 27 октября 2009

Как мне создать выражение регулярного выражения, которое будет соответствовать только буквам и цифрам, и один пробел между каждым словом?

Хорошие примеры:

Amazing

Hello World

I am 500 years old

Плохие примеры:

Hello  world

I am 500 years      old.

I    am   Chuck Norris

Ответы [ 6 ]

23 голосов
/ 27 октября 2009

Большинство реализаций регулярных выражений поддерживают классы именованных символов:

^[[:alnum:]]+( [[:alnum:]]+)*$

Вы можете быть умным, хотя и немного менее понятным, и упростите это до:

^([[:alnum:]]+ ?)*$

К вашему сведению, второй допускает паразитный пробел в конце строки. Если вы не хотите эту палку с первым регулярным выражением.

Также, как говорили другие авторы, если [[:alnum:]] не работает для вас, вы можете использовать [A-Za-z0-9].

7 голосов
/ 27 октября 2009
([a-zA-Z0-9]+ ?)+?
6 голосов
/ 16 ноября 2011
^([a-zA-Z0-9]+\s?)*$

его работы

2 голосов
/ 10 ноября 2009
^[a-zA-Z]+([\s][a-zA-Z]+)*$
1 голос
/ 27 октября 2009
(?:[a-zA-Z0-9]+[ ])+[a-zA-Z0-9]+

Если я правильно вас понял, приведенное выше выражение должно работать Смотрите скриншот ниже:

скриншот http://img136.imageshack.us/img136/6871/screenshotkiki056.png

0 голосов
/ 27 октября 2009

Это будет соответствовать слову

'[a-zA-Z0-9]+\ ?'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...