如果密码的文本框(ASP.NET)至少具有
,我需要在保存之前检查一个或多个小写字母,无论顺序如何 一个或多个大写的字符,无论顺序如何 一个或多个数字,无论顺序 一个或多个这个特殊字符“!#$%&%'()* ... 和最小长度o 8 char
如何用Regex Expression做到这一点?
ex: #Abc123aB (valid)
abcAbc123aB123& (valid)
abc123abc (invalid) missing uppercase and special char
被修改
<tr>
<td>Password</td>
<td><asp:TextBox ID="txtClave" TextMode="Password" runat="server" > </asp:TextBox>
<div id="divmensaje" style="display:inline-block">
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtClave" ValidationExpression="^[A-Za-z0-9_\.\*#]{8,25}$" ErrorMessage="Wrong format"></asp:RegularExpressionValidator>
</div>
</td>
</tr>
提前感谢您的时间和支持
答案 0 :(得分:0)
尽管可以这样做,但我不会尝试使用单个regex
来解决它。避免代码行有什么意义?代码变得更加复杂,我相信它也会变慢。
我会使用.Length
检查长度(比使用regex
更快),然后使用小而简单的regex
来检查每种字符类型。
答案 1 :(得分:0)
String password = "Aa!1asdetD"
HashSet<char> specialCharacters = new HashSet<char>() { '!', '@', '%', '$', '#' };
if (password.Any(char.IsLower) && //Lower case
password.Any(char.IsUpper) &&
password.Any(char.IsDigit) &&
password.Length > 8
password.Any(specialCharacters.Contains))
{
//valid password
}
采取形式Regex for strong password in ASP.net
另外,我想我会发布这个 - 它花了一点时间,但我相信这也应该达到你想要的效果
^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).+$