Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Regex 用于字母和数字组合的正则表达式,长度为5-30个字母,至少有4个大写字母、2个小写字母和至少1个数字_Regex - Fatal编程技术网

Regex 用于字母和数字组合的正则表达式,长度为5-30个字母,至少有4个大写字母、2个小写字母和至少1个数字

Regex 用于字母和数字组合的正则表达式,长度为5-30个字母,至少有4个大写字母、2个小写字母和至少1个数字,regex,Regex,嘿,伙计们,我是新来的正则表达式,我想创建一个单一的正则表达式来匹配 5-30个字母长 没有什么特别的特点, 至少有4个大写字母 至少有2个小写字母和 至少1个数字 示例:应匹配 https://stackoverflow.com/Abcde3FGhiDE/Zyx23应匹配:Abcde3FGhiDE | a | b | c | AbcdEFGH123 | 456Ac应匹配:AbcdEFG123 P Abcde3FGhiDE Z H应匹配:Abcde3FGhiDE ZZ123!躲起来!123应

嘿,伙计们,我是新来的正则表达式,我想创建一个单一的正则表达式来匹配

  • 5-30个字母长
  • 没有什么特别的特点,
  • 至少有4个大写字母
  • 至少有2个小写字母和
  • 至少1个数字
示例:应匹配
  • https://stackoverflow.com/Abcde3FGhiDE/Zyx23
    应匹配:
    Abcde3FGhiDE
  • | a | b | c | AbcdEFGH123 | 456Ac
    应匹配:
    AbcdEFG123
  • P Abcde3FGhiDE Z H
    应匹配:
    Abcde3FGhiDE
  • ZZ123!躲起来!123
    应匹配:
    Abcde3FGhiDE
  • 例子:没有对手
  • 5-30个字母,至少有4个大写字母、2个小写字母和1个数字

    这可能不是最干净的,但:

    /^(?=[a-ZA-Z\d]{5,30}$)(?=(.*[A-Z]){4})(?=(.*[a-z]){2}).*\d/
    
    你可以用

    \b(?=(?:[a-z0-9]*[A-Z]){4})(?=(?:[A-Z0-9]*[a-z]){2})(?=[a-zA-Z]*[0-9])[A-Za-z0-9]{5,30}\b
    
    解释

    • \b
      单词边界
    • (?=(?:[a-z0-9]*[a-Z]){4}
      断言4个大写字符a-Z
    • (?=(?:[A-Z0-9]*[A-z]){2}
      断言2个小写字符A-z
    • (?=[a-zA-Z]*[0-9])
      断言一个数字
    • [A-Za-z0-9]{5,30}
      匹配列出的任何5-30次
    • \b
      单词边界

    此网站不是代码编写服务。我们可以帮助您解决有关您的代码的特定问题,最好是附带一份报告。这看起来很像家庭作业或一些编码挑战——你会通过自己解决它学到更多。对不起,我会提供我所拥有的东西。这足够吗?还不错。你能描述一下它是如何不起作用的吗?如果不准确,请指出它正确使用的测试用例和它不正确使用的测试用例?如果这是您要求的。这不满足“无特殊字符”条件。试试(([a-zA-Z0-9]){5,30})$(?=(\D*\D{1,})(?=([^a-z]*[a-z]){2,})(?=([^a-z]*[a-z]){4,})哦,是的,我错过了。更新。。。还要确保先把锚放在你的船上。不幸的是,这似乎都不起作用,如果这有帮助的话,我发现:\b(?=(?:[a-z\d]*[a-z]){3}(?=.*\d)(?=(?:[a-z\d]*[a-z]){2}[a-zA-z\d]{5,30}\b做了我想做的一切,除了不匹配123之外,我已经尝试过断言一个前瞻,表示至少1个数字是一个先决条件,也就是(?=.*\d),但它仍然检测123,你知道怎么解决吗?你的假设有问题。
    \b(?=(?:[a-z0-9]*[A-Z]){4})(?=(?:[A-Z0-9]*[a-z]){2})(?=[a-zA-Z]*[0-9])[A-Za-z0-9]{5,30}\b