2015-04-19 2 views
0

Мне нужно создать регулярное выражение для проверки первого и второго имени человека. Второе имя необязательно, потому что есть люди без второго имени. Символ пробела может быть между двумя именами, но это не может быть концом строкиРегулярное выражение в Ruby on Rails

example 

"Juan Perez" is valid 
"Juan Perez " is invalid because there is a space character the end of the string 
+1

Это правда, что есть люди, без отчества (наиболее известные из которых «Cher»), но они довольно мало, поэтому я не думаю, что вам нужно беспокоиться о них. Wiki дает это [Список законно анонимных людей] (http://en.wikipedia.org/wiki/List_of_legally_mononymous_people). Тот, который мне больше всего нравится, - «KentuckyFriedCruelty.com». –

ответ

2

Вы можете использовать ниже регулярное выражение, которое использует дополнительную группу.

^[A-Za-z]+(?:\s[A-Za-z]+)?$ 

(?:\s[A-Za-z]+)? опциональной группа будет делать матч, если есть пространство, за которым следует один или несколько алфавитов. Он не будет соответствовать строке, если существует только одно пространство. А также утверждает, что в конце должен присутствовать алфавит.

DEMO

Update:

Если имя пользователя содержит не только ПгвЬЫат, но и MiddleName, Lastname ... то вы можете использовать регулярное выражение ниже. * повторяет предыдущий токен ноль или более раз, когда ? после токена (не из * или +) превратит предыдущий токен в качестве дополнительного.

^[A-Za-z]+(?:\s[A-Za-z]+)*$ 
+0

спасибо Авинаш Радж. Как я могу применить это регулярное выражение, если не знаю числа, имена которых есть у человека ?. Они могут быть 1,2,3 или четыре –

+0

просто превратить последний '?' В '*' –

+0

большое спасибо –

1

Как о способе, который не требует повторения класса обугленного:

^\b(\s?[[:alpha:]]+)+$ 
Смежные вопросы