我需要一个正则表达式。我基本上要做的是验证密码字段。
条件: 1.最小值为6个字符。
如果值为6个字符但不超过9个字符,则应包含至少1个数字和1个字母(允许使用字母数字和空格)。
如果值超过10个字符,则只能是字母。不需要像条件#2那样的数字。 (允许使用字母数字和空格)
我在RegularExpressionValidator ASP.NET控件中执行此操作。
谢谢!
答案 0 :(得分:0)
另一种方法是使用asp RegularExpressionValidator和CustomValidator的组合。您的正则表达式验证器可以使用以下内容检查最小长度:
<asp:RegularExpressionValidator id="regexPassword" runat="server"
Enabled="true" ControlToValidate="passwordTexbox"
ValidationExpression"^([a-zA-Z0-9_-]){6,}$"
</asp:RegularExpressionValidator>
<asp:CustomValidator id="customValidatorPassword" runat="server"
OnServerValidate="PasswordValid"
ControlToValidate="passwordTexbox">
</asp:CustomValidator>
然后您的服务器验证可能是这样的:
PasswordValid(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
//Check if an integer was entered if the length is <= 9
int integer;
if(passwordTextbox.Text.Length <= 9 && Int32.TryParse(passwordTextbox.Text, out integer))
{
args.IsValid = true;
}
else if (passwordTextbox.Text.Length > 9)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}
您可以在服务器代码或asp控件中设置错误消息。
答案 1 :(得分:0)
我不知道您使用的控件的可能性,因为我不是ASP.NET开发人员。
这是应该有效的正则表达式,但我认为你应该通过检查代码中的值来使用另一个选项。这个正则表达式难以理解且难以维护:
(?=(?:^.{10,}$|(?<issmall>^.{6,9}$)))(?(issmall)(?=^.*\d)(?=^.*[a-zA-Z]).*|.*)
输出:
0123456789: True
Hello1: True
Helloa: False
123456: False
Thats a very long text that should be accepted.: True