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

Jai*_*ake 0 javascript regex

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

我的要求

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

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

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

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

Cas*_*yte 8

你可以用这个:

/^[a-z][a-z0-9_-]{2,19}$/i
Run Code Online (Sandbox Code Playgroud)

您必须使用a ,来用大括号量词来编写范围.我首先放置了一个唯一的字母字符类来遵循您的规范(以字母开头),因此我将量词减少到{2,19}

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

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

/^[a-z][\w-]{2,19}$/i
Run Code Online (Sandbox Code Playgroud)

自从\w代表[a-zA-Z0-9_]