你应该使用两个单独的验证,一个检查长度和其他检查所需的最小字符(这样,你得到的每个检查两个单独的错误消息)。
实施例:
<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>
'LenghtValidator'?我没有在[微软的验证控件列表](https://msdn.microsoft.com/en-us/library/aa479013.aspx)中看到它? – JumpingJezza