正则表达式为字母数字密码,至少包含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; } }