使用^ [a-z0-9 _-] {3-20} $的用户名的正则表达式

时间:2013-09-01 20:36:51

标签: javascript regex

我正在使用此^[a-z0-9_-]{3-20}$正则表达式来验证用户名..

我的要求

  • 应该在3-20之间
  • 除连字符和下划线外,它不应该有特殊的字符
  • 它应该以字母
  • 开头

这个正则表达式有什么问题

  • 检查3-20但是当字符串在3-20
  • 之间有特殊字符时它也返回true
  • 当1-3之间的特殊字符有效时(返回false {what expected)}但是当3-20之间的特殊字符失败时(返回true {what not expected})...

我正在使用yii框架和默认规则匹配模式... 是不是错了......?

1 个答案:

答案 0 :(得分:8)

你可以用这个:

/^[a-z][a-z0-9_-]{2,19}$/i

您必须使用,在大括号量词中编写范围。我最初只放了一个字母字符类来遵循你的规范(以字母开头),因此我将量词减少到{2,19}

我假设您允许使用大写字母并添加i修饰符,但如果您只允许使用小写字母,则可以将其删除。

请注意,您可以像这样编写此正则表达式:

/^[a-z][\w-]{2,19}$/i

因为\w代表[a-zA-Z0-9_]