要求:
• 用户名的长度应在 5 到 30 个字符之间
• 它们必须包含字母和数字。
• 用户名不区分大小写。
• 不得使用空格。
允许:"!,@,#,$,%,^,?,_,~,-"
对于长度和正常字符的要求,我已经尝试过类似的方法。
^[a-z0-9_-]{5,30}$
这并不能保证我得到字母和数字 - 只是允许它们
[A-Za-z].*[0-9]|[0-9].*[A-Za-z]
我不知道如何将其限制为总共 5-30 个字符?
要求:
• 用户名的长度应在 5 到 30 个字符之间
• 它们必须包含字母和数字。
• 用户名不区分大小写。
• 不得使用空格。
允许:"!,@,#,$,%,^,?,_,~,-"
对于长度和正常字符的要求,我已经尝试过类似的方法。
^[a-z0-9_-]{5,30}$
这并不能保证我得到字母和数字 - 只是允许它们
[A-Za-z].*[0-9]|[0-9].*[A-Za-z]
我不知道如何将其限制为总共 5-30 个字符?
你可以试试这个正则表达式:
^(?=.*?[a-zA-Z])(?=.*?[0-9])[\w@#$%^?~-]{5,30}$
解释:
^
是行开始(?=.*?[a-zA-Z])
是一个积极的前瞻,将确保至少有一个字母表(?=.*?[0-9])
是一个积极的前瞻,将确保至少有一个数字[\w@#$%^?~-]{5,30}
正在使用方括号内指定的 5 到 30 个字符的字符类$
是行尾这里有一些提示:
[:alpha:]
是一个“特殊字符”,即“任何大写或小写字母”
[:digit:]
是“任何数字”
[!@#$%^?_~-]
意思是“匹配这些字符中的任何一个”
[^ ]
意思是“不匹配空格”
{5,30}
表示“匹配前面的表达式 5 到 30 次
正则表达式允许|
在两个表达式之间匹配“这个或那个”。
http://rubular.com/ 是一个很棒的“正则表达式沙盒”——您可以输入表达式,然后查看匹配的内容
当您在上面玩了一段时间并且“几乎可以工作”时,就会有人在这里帮助您“越过终点线”。