我正在使用这个 ^[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/