【发布时间】:2009-07-28 17:53:13
【问题描述】:
需要字母数字密码的正则表达式帮助,至少有 1 个数字和字符,长度必须在 8-20 个字符之间。
我有这个,但似乎没有用(它也没有长度要求):
^[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*$
【问题讨论】:
标签: c# javascript
需要字母数字密码的正则表达式帮助,至少有 1 个数字和字符,长度必须在 8-20 个字符之间。
我有这个,但似乎没有用(它也没有长度要求):
^[A-Za-z0-9]*[A-Za-z][A-Za-z0-9]*$
【问题讨论】:
标签: c# javascript
如果您看一下这个MSDN link,它会给出一个密码验证 RegEx 表达式的示例,以及(更具体地说)如何在 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]).*
? :)
【讨论】:
用一些简单的字符串函数来做这个验证,而不是试图硬塞一个难以验证的正则表达式来做这个不是更好吗?
【讨论】:
这样的东西会更接近您的需求。 (不过我没有测试它。)
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.
}
【讨论】:
此代码用于 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;
}
}
【讨论】: