我正在尝试使用正则表达式js用户名检查器进行注册,但是我遇到了一些问题
这是我写的表达
^[a-zA-Z]{1}([a-zA-Z0-9]*[\._ ]?){2,10}[A-za-z\d]$
问题是它不限制句号,下划线和空格,用户名也应该在4-12个字符之间。
我试图允许: 第一个角色必须从A-Z a-z开始 最后一个字符必须是字母数字 中间的所有内容必须是2-10个字母数字字符,并且只允许1个空格,句点和下划线。
例如:
任何帮助将不胜感激
答案 0 :(得分:2)
最好的方法是使用前瞻断言来组合两个不相关的要求。基本上,您需要确保此正则表达式 匹配:
^[a-zA-Z][a-zA-Z0-9._ ]{2,10}[a-zA-Z0-9]$
并且这个不匹配:
([._ ]).*\1
您可以使用否定先行断言
组合它们^(?!.*([._ ]).*\1)[a-zA-Z][a-zA-Z0-9._ ]{2,10}[a-zA-Z0-9]$
答案 1 :(得分:1)
试试这个。
^(?=.{4,12}$)[A-Za-z][A-Za-z0-9]{0,10}[._ ][A-Za-z0-9]{1,10}$
插入符号后的parentesized表达式检查长度(假设您的正则表达式方言提供了前瞻性断言)或单独检查代码中的字符串长度。
修改:允许号码作为最后一个字符。请注意,这需要在某处使用空格,点或下划线;如果你选择它,请相应地调整数字。