Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Опять регекспы...

Vande omentaina, Tiflocomp!
Опять они, родные, ни дна им ни покрышки!
итак, есть требование: при регистрации имя (логин) может быть любым,
удовлетворяющим следующему условию: оно должно содержать не менее двух
и не более четырёх слов и быть на кириллице. Таким образом, валидные логины:
"Джон Смит",
"Ульрих фон Юнгинген". Оговорюсь, что речь о JavaScript.
Был один регексп такого характера:
var re = /^([А-Я][а-я]+ ){2,4}$/i;
Понятно (это понял даже я!), что он будет пропускать только имена с
пробелом на конце ("Один или более символов на кириллице, затем
пробел, и всё это повторить от двух до четырёх раз").
Я попытался модифицировать (ха-ха) этот регексп, и получилось вот что:
var re = /^([А-Я][а-я]+ ){2,3}([А-Я][а-я]+)$/i;
Вопрос: что не так?
Спасибо!

Ответить   Anarendil Tue, 15 Sep 2009 21:53:34 +0300 (#905805)

 

Ответы:

Андрей, доброго вам здоровья!
Вы пишете:

var re = /^([А-Я][а-я]+ ){2,3}([А-Я][а-я]+)$/i;
Вопрос: что не так?

Разберем выражение. По условию {2,3} первая скобка дает минимум два слова с
пробелом на конце. Вторая скобка добавляет к ним слово без пробела на конце-
получаем на выходе три слова, которые не удовлетворяют вашему условию- имя
должно состоять от двух до четырех слов.

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

С уважением,
Грызунов Александр. Самара.

Ответить   "eastreb" Wed, 16 Sep 2009 10:18:08 +0400 (#905840)

 

Vande omentaina, eastreb!

Александр, похоже, вы гений) Я поменял на {1,3}, и вроде как всё
работает. Надеюсь, по крайней мере, что поток студентов и
преподавателей не прекратится). Спасибо!

Ответить   Anarendil Wed, 16 Sep 2009 21:13:57 +0300 (#906087)