正则表达式验证用户名不起作用

时间:2014-06-11 17:44:27

标签: php regex

我有这个正则表达式:

/^[A-z0-9\._-]{3,24}+$/i

这应该只匹配3到24个字符长的字符串,并且只匹配字符a-z,A-Z,0-9,然后也是。 _和 - 字符。

问题是这也匹配" ^ _ ^"等字符串。有人刚刚创建了一个用户名,所以这绝对是一个问题!有人能用我的正则表达式发现问题吗?

2 个答案:

答案 0 :(得分:3)

使用此正则表达式:

/^[\w.-]{3,24}$/

A-z[A-Za-z]不同,因为它还包含其他字符,例如^(感谢杰克)

+之后删除额外的量词{3,24},这意味着整个字符串的一个或多个实例。

PS:我还缩短了您的正则表达式以使用\w代替[A-Za-z0-9_]

答案 1 :(得分:2)

由于您使用+

指定一系列长度,因此不需要{3,24}
/^[A-z0-9\._-]{3,24}$/i

正如下面的评论所指出的,A-z也匹配^字符。在这种情况下,A-Za-z会更好;然而,到目前为止\w.-的答案是最优雅的。