如何根据用户输入在Regex上执行if-else操作

本文关键字:执行 if-else 操作 Regex 何根 用户 输入 | 更新日期: 2023-09-27 18:11:18

我需要一个正则表达式。我要做的就是验证密码字段

条件:1. 最小值为6个字符。

  • 如果值为6个字符但不超过9个字符,则至少包含1个数字和1个字母(允许字母数字和空格)

  • 如果value大于10个字符,只能是字母。不需要条件2这样的数字。(允许字母数字和空格)

  • 我在一个正则表达式验证器ASP中这样做。净控制。

    谢谢!

    如何根据用户输入在Regex上执行if-else操作

    我不知道你使用的控件的可能性,因为我不是一个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控件中设置错误消息