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

标签 javascript regex

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

我的要求

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

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

  • 它检查 3-20,但当字符串具有 3-20 之间的特殊字符时,它也会返回 true
  • 当特殊字符在 1-3 之间时,它可以工作(返回 false {预期的内容}),但当特殊字符在 3-20 之间时,它会失败(返回 true {预期的内容})...

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

最佳答案

你可以使用这个:

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

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

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

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

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

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

关于javascript - 使用 ^[a-z0-9_-]{3-20}$ 的用户名正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562664/

相关文章:

javascript - 使用 AngularJS 拦截器防止 HTTP 基本身份验证对话框

javascript - 确保 HTML 5 视频始终在其他所有内容之上播放

c++ - 如何使用正则表达式匹配不包含特殊字符(&、\、<、>、|、)的字符串,除非它们以反斜杠开头

c# - 在 .Net 中为整个句子实现 soundex

javascript - 使用滚动折叠一个 div 直到某个点

javascript - PNG 上的发光效果脉动发光效果

javascript - jQuery 将变量内容添加到 DIV 中

regex - 使用 vim regexp 清除文件中的前导零

sql - 使用正则表达式从字符串中删除中断标记

python - 正则表达式匹配除 "<--"之外的所有非字母数字字符