题
我需要一个(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)<!> gt; = 4和<!> lt; = 32。
一个点限制?这很棘手。
我不是正则表达式专家,但我认为除非那样,否则会得到它:
[A-Za-z][A-Za-z0-9_.]{3,31}
也许你可以检查一下。要求单独?
使用前瞻您可以执行以下操作:
^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$
因为你没有指定你需要什么类型的正则表达式我添加了很多Perl 5兼容的东西。喜欢(?: ... )
非捕获的parens。
注意:我添加了失踪的关闭paren。
不隶属于 StackOverflow