Php 特定条件下正则表达式模式的需要

Php 特定条件下正则表达式模式的需要,php,jquery,regex,Php,Jquery,Regex,如何使用以下条件创建正则表达式 最小密码长度:8 最小字符数:1 最小位数:1 最小特殊字符数:1 最大重复字符数:2 最大字母顺序:2 最大数字顺序:2 尝试: ^(?=(.*\d){1})(?=.*[!@#$%_-]) (?=.*[0-9a-zA-Z]){1,2}.{8,}$ 您可以这样做(我假设字母/数字指的是ASCII字母/数字),但您的最后两个要求并不简单: if (preg_match( '/^ # Start of string (?=.

如何使用以下条件创建正则表达式

  • 最小密码长度:8
  • 最小字符数:1
  • 最小位数:1
  • 最小特殊字符数:1
  • 最大重复字符数:2
  • 最大字母顺序:2
  • 最大数字顺序:2
  • 尝试:

    ^(?=(.*\d){1})(?=.*[!@#$%_-]) (?=.*[0-9a-zA-Z]){1,2}.{8,}$
    
    您可以这样做(我假设字母/数字指的是ASCII字母/数字),但您的最后两个要求并不简单:

    if (preg_match(
        '/^              # Start of string
        (?=.*[a-z])      # Assert at least one letter
        (?=.*[0-9])      # and one digit
        (?=.*[^a-z0-9])  # and one "other" character
        (?!.*(.)\1{2})   # and no three identical characters in a row
        (?!.*(?:abc|bcd|cde|def|efg|fgh|ghi|
                hij|ijk|jkl|klm|lmn|mno|nop|
                opq|pqr|qrs|rst|stu|tuv|uvw|
                vwx|wxy|xyz)) # and no three-letter sequence
        (?!.*(?:123|234|345|456|567|678|789|890))  # and no three-digit sequence
        .{8,}            # Match at least 8 characters
        $                # End of string/ix',       
        $subject)) {
        # Successful match
    } else {
        # Match attempt failed
    }
    

    如果您还想按降序排除字母/数字(或像
    zab
    901
    )您需要将它们添加到备选方案中。

    您能举个例子吗?对于“不够努力或解决方案尝试”再也没有接近投票的选项了?这样的问题怎么办?回答或要求更多的OP,或对某件事进行投票?(我想这应该属于meta。)@Qtax我同意u mate的观点,我们不是来为任何人编码的,我们可以解决问题,不是为他们自己编码,我不会尝试在一个正则表达式中完成所有这些。你为什么不一件一件地测试一下呢?你用的是什么语言?@emh我试过->^(?=(.*\d){1})(?=.[!@$%.-])(?=.[0-9a-zA-Z]){1,2}。{8,}$,我需要最大重复字符数,字母*数字顺序我希望在写几乎完全相同的答案时刷新这个!你赢了我!我的答案中唯一显著的区别是明确指定特殊字符
    [!@$%\u-]
    ,如OP的示例所示。