Yahoo Имя пользователя Regex - PullRequest
9 голосов
/ 04 октября 2008

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

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

Ответы [ 4 ]

16 голосов
/ 04 октября 2008
/^[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
7 голосов
/ 04 октября 2008
/[a-zA-Z][a-zA-Z0-9_]*\.?[a-zA-Z0-9_]*/

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

2 голосов
/ 04 октября 2008

лимит в одну точку? Это сложно.

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

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

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

1 голос
/ 04 октября 2008

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

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

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

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

...