如何根据用户输入在Regex上执行if-else操作
本文关键字:执行 if-else 操作 Regex 何根 用户 输入 | 更新日期: 2023-09-27 18:11:18
我需要一个正则表达式。我要做的就是验证密码字段
条件:1. 最小值为6个字符。
-
如果值为6个字符但不超过9个字符,则至少包含1个数字和1个字母(允许字母数字和空格)
-
如果value大于10个字符,只能是字母。不需要条件2这样的数字。(允许字母数字和空格)
我在一个正则表达式验证器ASP中这样做。净控制。
谢谢!
我不知道你使用的控件的可能性,因为我不是一个ASP。网络开发人员。
这是应该工作的正则表达式,但我认为你应该通过检查代码中的值使用另一个选项。这个正则表达式很难理解,也很难维护:
(?=(?:^.{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
另一种方法是使用asp RegularExpressionValidator和CustomValidator的组合。您的Regex验证器可以使用以下命令检查最小长度:
<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控件中设置错误消息