2011-12-16 4 views
3

я показал следующее:Regex для проверки строки содержит только одно слово

[RegularExpression(@"\b*[a-zA-Z0-9_]\b", ErrorMessage = "Enter a single work account name please")] 

Но это, кажется, дает ошибку, когда строка содержит более одного символа. Может ли кто-нибудь помочь с регулярным выражением, которое проверяет, есть ли в строке несколько слов?

+0

Что именно вы хотите сделать? Проверьте «если в строке несколько слов» или проверьте «когда строка содержит более одного символа»? –

ответ

3

Там был только отсутствует один единственный кусок для вашего регулярного выражения

@"^\b[a-zA-Z0-9_]+\b$" 

Вы забыли указать, что символ может быть повторен более чем 1 раз. Вот причина, по знаку плюс, так что она может принимать только 1 слово

+0

Это * не * удовлетворяет требованию допускать только одно слово. Пройдите «foo bar», и вы получите два матча. Вам нужно '^ ... $' вместо границ слов '\ b'. – Jay

+0

@Jay Спасибо за указание – jclozano

5
^[a-zA-Z0-9_]+$ 

границы \b Word, здесь не работают, так как шаблон будет соответствовать для каждого слова.

Если вы хотите, чтобы не латинские символы, вы можете использовать сокращенную версию:

^\w+$ 
0

Попробуйте это: "\b[a-zA-Z0-9_]+\b". Это будет соответствовать любому из этих символов один или несколько раз.

+0

Это * не * удовлетворяет требованию допускать только одно слово. Пройдите «foo bar», и вы получите два матча. Вам нужно '^ ... $' вместо границ слов '\ b'. – Jay