要求:
•用户名长度应在5到30个字符之间 •它们必须包含字母和数字 •用户名不区分大小写 •不得使用空格。
允许:“!,@,#,$,%,^,?,_,〜, - ”
我已经尝试了类似这样的长度和普通字符要求。
^[a-z0-9_-]{5,30}$
这并不能保证我同时收到字母和数字 - 只是允许我们
[A-Za-z].*[0-9]|[0-9].*[A-Za-z]
我不知道如何将此限制为5-30个字符?
答案 0 :(得分:4)
你可以试试这个正则表达式:
^(?=.*?[a-zA-Z])(?=.*?[0-9])[\w@#$%^?~-]{5,30}$
<强>解释强>
^
是行开始(?=.*?[a-zA-Z])
是一个积极的先行,将确保至少有一个字母(?=.*?[0-9])
是一个积极的先行,将确保至少有一位数字[\w@#$%^?~-]{5,30}
使用方括号内指定的5到30个字符的字符类$
是行尾答案 1 :(得分:1)
以下是一些提示:
[:alpha:]
是一个&#34;特殊角色&#34;那是&#34;任何大写或小写字母&#34;
[:digit:]
是&#34;任何数字&#34;
[!@#$%^?_~-]
表示&#34;匹配任何这些字符&#34;
[^ ]
表示&#34;不匹配空格&#34;
{5,30}
表示&#34;匹配前面的表达式5到30次
正则表达式允许两个表达式之间的|
之类的内容匹配&#34;这个或那个&#34;。
http://rubular.com/是一个伟大的正则表达式沙箱&#34; - 您可以输入表达式,并查看匹配的内容
当你玩了上面一段时间并且得到它并且几乎正在工作&#34;时,会有人在这里帮助你[#34;越过终点线&#34;。