Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 正则表达式验证问题_Html_Regex_Vb.net - Fatal编程技术网

Html 正则表达式验证问题

Html 正则表达式验证问题,html,regex,vb.net,Html,Regex,Vb.net,我在用电话 ^(?=^.{14,30}$)(?=^.[\d]{3}$)(?=^.[a-z]{4}$)(?=^.[A-Z]{5}$)(?=^.[!*&#$%^]{2}).$ 正则表达式,以验证以下最低要求: 四个小写字母 五个大写字母 三位数 两个特殊字符 总长度在14到30个字符之间 但不幸的是,此验证模式无法验证我的字符串。 我已经寻找了regex模式验证,并告诉我该模式是正确的 有人能在这方面给我支持吗请注意,(?=^.[a-z]{4}$)要求匹配5个字符的字符串,其中第一个csn

我在用电话

^(?=^.{14,30}$)(?=^.[\d]{3}$)(?=^.[a-z]{4}$)(?=^.[A-Z]{5}$)(?=^.[!*&#$%^]{2}).$
正则表达式,以验证以下最低要求:

  • 四个小写字母
  • 五个大写字母
  • 三位数
  • 两个特殊字符
  • 总长度在14到30个字符之间
  • 但不幸的是,此验证模式无法验证我的字符串。
    我已经寻找了
    regex
    模式验证,并告诉我该模式是正确的
    有人能在这方面给我支持吗

    请注意,
    (?=^.[a-z]{4}$)
    要求匹配5个字符的字符串,其中第一个csn是任意字符,然后必须有4个小写字母。最后,在
    ^
    和lookaheads之后,在
    $
    之前有
    ,因此实际上,整个正则表达式可以匹配单个字符字符串

    你可以用

    ^(?=(?:\D*\d){3})(?=(?:[^a-z]*[a-z]){4})(?=(?:[^A-Z]*[A-Z]){5})(?=(?:[^!*&#$%^]*[!*&#$%^]){2}).{8,30}$
    
    看。A:

    详细信息

    • ^
      -字符串的开头
    • (?=(?:\D*\D){3})
      -任何0+非数字的三次出现,后跟一个数字
    • (?=(?:[^a-z]*[a-z]){4}
      -四次出现任何0+字符,但小写ASCII字母后跟小写ASCII字母除外
    • (?=(?:[^A-Z]*[A-Z]){5}
      -除大写ASCII字母后接大写ASCII字母外,任何0+字符出现五次
    • (?=(?:[^!*&#$%^]*[!*&#$%^]){2}
      -除了某些特定的特殊字符(在字符类中定义)之外,任何0+字符都会出现两次,后跟指定的
      !*&#$%中的字符^设置
    • {8,30}
      -任何8到30个字符
    • $
      -字符串结束


    与其使用可能难以维护的正则表达式,不如使用一些易于阅读和修改的简单代码:

    Private Function IsStringValid(s As String) As Boolean
        If (s.Length > 30) OrElse (s.Length < 14) Then
            Return False
        End If
    
        Dim lower, upper, digit, special As Integer
        For Each c As Char In s
            Select Case True
                Case Char.IsLower(c)
                    lower += 1
                Case Char.IsUpper(c)
                    upper += 1
                Case Char.IsDigit(c)
                    digit += 1
                Case Char.IsSymbol(c) OrElse Char.IsPunctuation(c)
                    special += 1
            End Select
        Next
        Return (lower >= 4) AndAlso (upper >= 5) AndAlso (digit >= 3) AndAlso (special >= 2)
    End Function
    
    私有函数IsStringValid(作为字符串)作为布尔值
    如果(s.Length>30)或(s.Length<14),则
    返回错误
    如果结束
    变暗下限、上限、数字、特殊整数
    对于每个c作为s中的字符
    选择Case True
    案例字符孤岛(c)
    下限+=1
    Case Char.IsUpper(c)
    上限+=1
    案例特征IsDigit(c)
    位数+=1
    Case Char.IsSymbol(c)或lse Char.ispunchuation(c)
    特殊+=1
    结束选择
    下一个
    返回(下>=4)和ALSO(上>=5)和ALSO(数字>=3)和ALSO(特殊>=2)
    端函数
    

    根据您的要求,最小长度必须为14。

    四个小写字母或至少四个?连续或在任何位置?你的模式一团糟
    (?=^.[a-z]{4}$)
    要求匹配5个字符的字符串,其中第一个csn为任意字符,然后必须有4个小写字母。最后,在
    ^
    和lookaheads之后,在
    $
    之前有
    ,因此实际上,整个正则表达式可以匹配单个字符字符串。
    ^(?=(?:.*[A-Z]){5})(?=(?:.*[a-z]){4})(?=(?:.*\d){3})(?=(?:.*[!*&#$%^]){2}).(14,30)$
     └───────┬────────┘└───────┬────────┘└──────┬──────┘└─────────┬──────────┘
             │                 │                │                 │
             │                 │                │        2 special characters
             │                 │                │
             │                 │            3 digits
             │                 │
             │          4 lowercase letters
             │ 
      5 uppercase letters
    
    Private Function IsStringValid(s As String) As Boolean
        If (s.Length > 30) OrElse (s.Length < 14) Then
            Return False
        End If
    
        Dim lower, upper, digit, special As Integer
        For Each c As Char In s
            Select Case True
                Case Char.IsLower(c)
                    lower += 1
                Case Char.IsUpper(c)
                    upper += 1
                Case Char.IsDigit(c)
                    digit += 1
                Case Char.IsSymbol(c) OrElse Char.IsPunctuation(c)
                    special += 1
            End Select
        Next
        Return (lower >= 4) AndAlso (upper >= 5) AndAlso (digit >= 3) AndAlso (special >= 2)
    End Function