Вопрос

Мне нужно (php) регулярное выражение, чтобы соответствовать правилам имени пользователя Yahoo:

  

Используйте от 4 до 32 символов и начинайте с буквы. Вы можете использовать буквы, цифры, подчеркивания и одну точку (.).

Это было полезно?

Решение

/^[A-Za-z](?=[A-Za-z0-9_.]{3,31}$)[a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*$/

Или немного короче:

/^[a-z](?=[\w.]{3,31}$)\w*\.?\w*$/i

Другие советы

/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

И проверьте, если strlen ($ username) > = 4 и < = 32.

Ограничение в одну точку? Это сложно.

Я не эксперт по регулярным выражениям, но я думаю, что это получится, за исключением этого:

[A-Za-z][A-Za-z0-9_.]{3,31}

Может быть, вы могли бы проверить. Требование отдельно?

Используя Lookaheads, вы можете сделать следующее:

^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$

Поскольку вы не указали, какой тип регулярного выражения вам нужен, я добавил много Perl 5-совместимых вещей. Как и (?: ... ) для нехватки паренов.

Примечание. Я добавил отсутствующую близкую парню обратно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top