Regex 用于代码优化的正则表达式组合

Regex 用于代码优化的正则表达式组合,regex,Regex,是否可以使用正则表达式组合这些标准 至少包含8个字符,并至少包含以下三个字符: 大写字母(A-Z) 数字(0-9) 小写字母α(a-z) 特殊字符(,!$%^&*()+| ~-=`{}[]:“;”?,/) 是的,这是可能的。 您使用的regex引擎必须支持条件(?(cond)yes |否) 也就是说,如果您使用任何其他字符,则使用点 ^(?=.{8})(?:.*?(?:(?(1)(?!))([A-Z])|(?(2)(?!))([a-z])|(?(3)(?!))([0-9])|(?(4)(?!)

是否可以使用正则表达式组合这些标准

至少包含8个字符,并至少包含以下三个字符:

  • 大写字母(A-Z)
  • 数字(0-9)
  • 小写字母α(a-z)
  • 特殊字符(,!$%^&*()+| ~-=`{}[]:“;”?,/)
  • 是的,这是可能的。
    您使用的regex引擎必须支持条件
    (?(cond)yes |否)

    也就是说,如果您使用任何其他字符,则使用点

    ^(?=.{8})(?:.*?(?:(?(1)(?!))([A-Z])|(?(2)(?!))([a-z])|(?(3)(?!))([0-9])|(?(4)(?!))([!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]))){3,4}.*$
    
    (?:{8})(?:*(?:(?(1)(?!)([A-Z]))(?(2)(?!)([A-Z])((?(3)(?!)([0-9])(?(4)(?!)([!“$%”和“*+,\-/:;?”)([3,4])*$
    

    扩大

     ^                                             # BOS
     (?= .{8} )                                    # At least 8 chars
     (?:                                           # Require 3 out of the 4 types
          .*? 
          (?:
               (?(1)
                    (?!)
               )
               ( [A-Z] )                                     # (1), Upper
            |  
               (?(2)
                    (?!)
               )
               ( [a-z] )                                     # (2), Lower
            |  
    
               (?(3)
                    (?!)
               )
               ( [0-9] )                                     # (3), Digit
            |  
               (?(4)
                    (?!)
               )
               ( [!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~] )       # (4), Special
          )
     ){3,4}
     .* 
     $                                             # EOS
    
     ^                                             # BOS
     (?= .{8} )                                    # At least 8 chars
     (?:                                           # Require 3 out of the 4 types
          [a-zA-Z0-9!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]*? 
          (?:
               (?(1)
                    (?!)
               )
               ( [A-Z] )                                     # (1), Upper
            |  
               (?(2)
                    (?!)
               )
               ( [a-z] )                                     # (2), Lower
            |  
    
               (?(3)
                    (?!)
               )
               ( [0-9] )                                     # (3), Digit
            |  
               (?(4)
                    (?!)
               )
               ( [!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~] )       # (4), Special
          )
     ){3,4}
     [a-zA-Z0-9!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]* 
     $    
    
    ^#BOS
    (?=.{8})#至少8个字符
    (?:#需要4种类型中的3种
    .*? 
    (?:
    (?(1)
    (?!)
    )
    ([A-Z])#(1),上
    |  
    (?(2)
    (?!)
    )
    ([a-z])#(2),下
    |  
    (?(3)
    (?!)
    )
    ([0-9])#(3),数字
    |  
    (?(4)
    (?!)
    )
    ([!“\$%&'()*+,\-./:;?@[\]^{124}~])(4),特别
    )
    ){3,4}
    .* 
    $#EOS
    
    如果希望ascii范围内仅允许非空白,请使用

    ^(?=.{8})(?:[a-zA-Z0-9!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]*?(?:(?(1)(?!))([A-Z])|(?(2)(?!))([a-z])|(?(3)(?!))([0-9])|(?(4)(?!))([!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]))){3,4}[a-zA-Z0-9!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]*$
    
    (3)除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了除了以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外以外,其他其他其他其他其他其他其他其他其他其他其他其他其他其他其他其他外,,,其他-Z0-9!“\$%&'()*+,\-./:;?@[\]^{124;}]*$ 扩大

     ^                                             # BOS
     (?= .{8} )                                    # At least 8 chars
     (?:                                           # Require 3 out of the 4 types
          .*? 
          (?:
               (?(1)
                    (?!)
               )
               ( [A-Z] )                                     # (1), Upper
            |  
               (?(2)
                    (?!)
               )
               ( [a-z] )                                     # (2), Lower
            |  
    
               (?(3)
                    (?!)
               )
               ( [0-9] )                                     # (3), Digit
            |  
               (?(4)
                    (?!)
               )
               ( [!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~] )       # (4), Special
          )
     ){3,4}
     .* 
     $                                             # EOS
    
     ^                                             # BOS
     (?= .{8} )                                    # At least 8 chars
     (?:                                           # Require 3 out of the 4 types
          [a-zA-Z0-9!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]*? 
          (?:
               (?(1)
                    (?!)
               )
               ( [A-Z] )                                     # (1), Upper
            |  
               (?(2)
                    (?!)
               )
               ( [a-z] )                                     # (2), Lower
            |  
    
               (?(3)
                    (?!)
               )
               ( [0-9] )                                     # (3), Digit
            |  
               (?(4)
                    (?!)
               )
               ( [!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~] )       # (4), Special
          )
     ){3,4}
     [a-zA-Z0-9!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~]* 
     $    
    
    ^#BOS
    (?=.{8})#至少8个字符
    (?:#需要4种类型中的3种
    [a-zA-Z0-9!”#$%&'()*+,\-./:;?@[\]^{{124;}~]*?
    (?:
    (?(1)
    (?!)
    )
    ([A-Z])#(1),上
    |  
    (?(2)
    (?!)
    )
    ([a-z])#(2),下
    |  
    (?(3)
    (?!)
    )
    ([0-9])#(3),数字
    |  
    (?(4)
    (?!)
    )
    ([!“\$%&'()*+,\-./:;?@[\]^{124}~])(4),特别
    )
    ){3,4}
    [a-zA-Z0-9!”#$%&'()*+,\-./:;?@[\]^{{124;}]*
    $    
    
    您没有对特殊字符集中的
    /
    字符进行转义。@EganWolf-并且它不需要转义。它不是特殊字符。只有当它用作字符串正则表达式分隔符,即正则表达式文字(JS、Perl或Php等)时才需要转义。我们/我只在上下文中显示正则表达式。如果它是原始的(这是)你看到的是引擎解析的内容。你到底在为什么优化代码?一般来说,你应该为了简单而优化代码,这意味着不要将它们组合在一个正则表达式中。“至少三分之一”是正则表达式最糟糕的地方之一。最好单独评估每个标准,并用宿主语言编写业务规则