文本框最小长度的验证器

8
     <asp:RequiredFieldValidator ID="NewPasswordRequired" runat="server" ControlToValidate="NewPassword" 
ErrorMessage="New Password is required." ToolTip="New Password is required." ValidationGroup="ChangeUserPasswordValidationGroup">
 </asp:RequiredFieldValidator>

如何验证文本框以输入长度应大于8且必须包含1个数字和1个大写字母的值。

4个回答

6
<asp:RegularExpressionValidator ID="RegExp1" runat="server"    
ErrorMessage="Password length must be between 7 to 10 characters"
ControlToValidate="txtPassword"
ValidationExpression="^[a-zA-Z0-9'@&#.\s]{7,10}$" />

4

除了您的RequiredFieldValidator之外,添加一个RegularExpressionValidator。

对于正则表达式模式,您可以使用以下模式:

^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

密码必须至少包含8个字符,且至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。

在技术上,您可以只使用正则表达式验证器,但使用多个验证器允许您根据缺失的或仅仅是不正确的密码来显示不同的错误消息。


1
是的,你应该使用多个验证器。 这是针对长度的一个示例:^[\s\S]{6,}$ - Adam

3

您应该使用两个独立的验证器,一个用于检查长度,另一个用于检查最小所需字符数(这样您可以获得每个检查的两个独立错误消息)。

例如:

<asp:TextBox ID="MyPasswordField" runat="server" TextMode="Password"></asp:TextBox>
<!-- Add validator for minimum length requirement -->
<asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="MyPasswordField" ID="MyPassordMinLengthValidator" ValidationExpression="^[\s\S]{8,}$" runat="server" ErrorMessage="Password must be at least 8 characters long."></asp:RegularExpressionValidator>
<!-- Add validator for minimum required characters -->
<asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="MyPasswordField" ID="MyPassordRequiredCharacterValidator" ValidationExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).+$" runat="server" ErrorMessage="Must contain at least one uppercase letter, one lowercase letter, and one number."></asp:RegularExpressionValidator>

如果您还需要验证密码的最大长度,您可以将第一个验证器的正则表达式更改为以下内容:
<asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="MyPasswordField" ID="MyPassordMinMaxLengthValidator" ValidationExpression="^[\s\S]{8,40}$" runat="server" ErrorMessage="Password must be between 8 and 40 characters long."></asp:RegularExpressionValidator>

如果你需要验证至少一个特殊字符出现过,那么可以使用下面这个正则表达式进行第二次验证(至少包含以下一种字符:<space>@#$%^&?,;:_|{}=+-!.*()[]~):

<asp:RegularExpressionValidator Display="Dynamic" ControlToValidate="MyPasswordField" ID="MyPassordRequiredCharacterValidator" ValidationExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&?,;:_|~{}=\+\-\!\.\*\(\)\[\] ]).+$" runat="server" ErrorMessage="Must contain at least one uppercase letter, one lowercase letter, one number, and one special character."></asp:RegularExpressionValidator>

2
我会使用两个验证器: LenghtValidatorRegularExpressionValidator
拥有两个验证器的好处是可以有两个错误消息。

2
“LenghtValidator”?我在微软验证控件列表中没有看到它? - JumpingJezza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接