|
|
|
| Казалось бы, элементарная процедура, но хочется проверку сделать более сложной, нежели стандартное "буквы, цифры, знак подчеркивания".
Что же хочется иметь на выходе (в скобках чего уже я добился)
Имя пользователя:
1) Буквы русского и английского алфавита, хотя бы одна буква (сделано)
2) Цифры, причем только из цифр не катит (сделано)
3) Знак подчеркивания – только один, не в начале и не в конце (???)
4) Начинаем имя только с буквы (сделано)
5) Длина имени от 4 до 20 символов (сделано)
Примеры:
Хорошо: Вася_Пупкин, Вася_1988, В_ясяПупкин, Vasya_Pupkin и прочие варианты Васи
Плохо: vas, 1vas, _vasya, vasya_, v__asya, ______, 123456, vassissualiypupkine1234567890
Начал писать регулярку с вот этого:
$template = "/^[a-zA-Zа-яА-ЯёЁ][a-zA-Zа-яА-ЯёЁ0-9_]{4,20}$/";
По сути мне осталось только проверить, чтобы символ подчеркивания был только один и не в конце строки.
Может быть, уже поднималась эта тема? Я не нашел. | |
|
|
|
|
|
|
|
для: KonstRuctor
(14.10.2012 в 12:51)
| | Сомневаюсь что сможете это сделать одним выражением.
Могу предложить такой вариант:
<?
$template = "/^[a-zа-яё][a-zа-яё\d]*(_[a-zа-яё\d]+)?$/i";
|
Но общую длину придется проверить отдельно функцией strlen(); | |
|
|
|
|
автор: в три прохода :) (15.10.2012 в 20:26) |
|
|
для: KonstRuctor
(14.10.2012 в 12:51)
| | $template = "/^(?![\d_]|.+_$)[0-9A-Z_a-zА-Яа-яёЁ]{4,20}$/"; | |
|
|
|
|
|
|
|
для: в три прохода :)
(15.10.2012 в 20:26)
| | Если бы не условие: -Один символ подчеркивания, - то да.
А так "v_a_s_y_a" проходит без проблем. | |
|
|
|