我需要一个(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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top