正则表达式为字母数字密码,至少包含1个数字和字符
需要有关字母数字密码的正则表达式的帮助,至少包含1个数字和字符,长度必须介于8-20个字符之间。
我有这个,但似乎没有工作(它也没有长度要求):
^[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*$
如果您查看此MSDN链接 ,它会提供密码validationRegEx表达式的示例,以及(更具体地说)如何在ASP.NET中使用它。
对于你想要完成的任务,这应该工作:
(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$
这需要至少一个数字,至少一个字母字符,没有特殊字符,长度为8-20个字符。
为什么不使用一些简单的function来检查?
checkPasswordLength( String password); checkPasswordNumber( String password);
可能还要多一些,以反复和连续地检查相同字符的出现次数。
^(?=.{8,20}$)(?=.*[0-9])(?=.*[a-zA-Z]).*
? 🙂
使用一些简单的字符串函数进行validation,而不是试图将难以validation的正则表达式用于执行此操作,这不是更好吗?
这样的事情将更接近您的需求。 (不过,我没有测试过。)
Regex test = new Regex("^(?:(?[A-Za-z])|(?[9-0])){8,20}$"); Match m = test.Match(input); if (m.Success && m.Groups["ch"].Captures.Count > 1 && m.Groups["num"].Captures.Count > 1) { // It's a good password. }
此代码适用于javascript
// *********** ALPHA-Numeric check *************************** function checkAlphaNumeric(val) { var mystring=new String(val) if(mystring.search(/[0-9]+/)==-1) // Check at-leat one number { return false; } if(mystring.search(/[AZ]+/)==-1 && mystring.search(/[az]+/)==-1) // Check at-leat one character { return false; } }