我需要一个(php)正则表达式来匹配雅虎的用户名规则:
使用 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}
也许你可以检查一下。分别要求?
使用前瞻,您可以执行以下操作:
^(?=[A-Za-z](?:\w*(?:\.\w*)?$))(\S{4,32})$
因为你没有指定你需要什么类型的正则表达式,所以我添加了很多 Perl 5 兼容的东西。就像(?: ... )
非捕获括号一样。
注意:我添加了缺少的关闭括号。