需要帮助设计一个包含至少1个数字和字符,长度在8-20个字符之间的密码正则表达式。
我已经有了以下正则表达式,但它似乎不能完全满足要求(它也没有长度要求):
^[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*$
需要帮助设计一个包含至少1个数字和字符,长度在8-20个字符之间的密码正则表达式。
我已经有了以下正则表达式,但它似乎不能完全满足要求(它也没有长度要求):
^[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*$
如果你查看这个MSDN链接,它给出了一个密码验证正则表达式的示例,以及(更具体地)如何在ASP.NET中使用它。
针对你想要实现的目标,以下代码应该可以胜任:
(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$
该密码要求至少包含一个数字和一个字母字符,不包含任何特殊字符,长度在8到20个字符之间。
checkPasswordLength( String password);
checkPasswordNumber( String password);
^(?=.{8,20}$)(?=.*[0-9])(?=.*[a-zA-Z]).*
? :)
这段代码是用于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(/[A-Z]+/)==-1 && mystring.search(/[a-z]+/)==-1) // Check at-leat one character
{
return false;
}
}
类似这样的代码可能更符合您的需求。(尽管我没有测试过。)
Regex test = new Regex("^(?:(?<ch>[A-Za-z])|(?<num>[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.
}
使用一些简单的字符串函数进行验证,是否比试图将难以验证的正则表达式塞入其中更好呢?