当前位置: 首页 > 知识库问答 >
问题:

使用OR进行正则表达式密码验证

孙永思
2023-03-14

我需要使用以下规则验证密码:

密码必须包含6-12个字符,并且至少包含以下两个字符:大写字母、小写字母、数字或符号。以下是我目前的正则表达式:

^((?=.*[a-z])|(?=.*[A-Z])|(?=.*\\d)|(?=.*(_|[-+_!@#$%^&*.,?]))).{6,12}

我在纠结如何提出“至少”的条件。

共有2个答案

强阳曜
2023-03-14

你可以试试这个

^(?:(?=.*[a-z])(?:(?=.*[A-Z])(?=.*[\\d\\w])|(?=.*\\w)(?=.*\\d))|(?=.*\\w)(?=.*[A-Z])(?=.*\\d)).{6,12}$;
百里鸿祯
2023-03-14

您可以定义一个函数来逐个检查您的需求,并增加一个计数器来查看实际满足了多少需求。如果匹配超过1个,并且字符串长度在6到12之间,则密码通过。

NSUInteger checkPassword(NSString * haystack) {
    NSArray * arr = [NSArray arrayWithObjects: @"(?s).*\\d.*", @"(?s).*[a-z].*", @"(?s).*[A-Z].*", @"(?s).*[-+_!@#$%^&*.,?].*",nil];
    NSUInteger cnt = 0;
    for (NSUInteger index = 0; index < [arr count]; ++index) {
        NSPredicate * passTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", [arr objectAtIndex:index]];
        if ([passTest evaluateWithObject:haystack]) {
            cnt = cnt + 1;
        }
    }
    if (cnt > 1 && [haystack length] > 5 && [haystack length] < 13)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

和一个IDEONE演示示例:

NSString * s = @"123DF4ffg";
NSLog(@"Result: %d", checkPassword(s));
// => Result: 1

请注意,可以为此编写单个模式,但它将相当长且笨拙,因为您需要定义所有可能的前瞻备选方案对。

 类似资料:
  • 我需要检查密码是否至少包含: 一个号码 一个小写字符 一个大写字符 一个特殊符号(.,@etc) 我在C#中有以下内容: 但这并不有效: 我错过了什么? 更新 我正在将其与系统.组件模型.数据注释一起使用来验证模型属性:

  • 我正在编写一个正则表达式来验证密码。条件是: > 密码必须至少包含两个特殊字符 密码必须至少有八个字符长 我可以使用以下正则表达式确保至少有8个字符、至少一个字母表、至少一个数字和至少一个特殊字符: 我无法获得的唯一条件是必须至少有两个特殊字符(上面的Reg exp是至少一个特殊字符)。有人知道这件事吗? 提前谢谢。

  • 有人能帮我理解为什么这不起作用吗 出于某种原因,它接受包含大小字母的密码,并验证包含数字和小写字母的密码。但它应该只验证是否满足了for规则中的3条。

  • 问题内容: 谁能帮助我创建用于密码验证的正则表达式。 条件为“密码必须包含8个字符和至少一个数字,一个字母和一个唯一字符,例如 问题答案:

  • 本文向大家介绍最新密码验证正则表达式,包括了最新密码验证正则表达式的使用技巧和注意事项,需要的朋友参考一下 正则表达式验证密码功能在项目中经常被使用到,但是很多朋友还是不大会使用密码正则表达式进行验证,本文小编为大家整理了php密码验证正则表达式、python密码强度正则,当然还有大家常用到的js正则表达式,希望大家喜欢。 刚开始复习一下,什么是正则表达式? 在编写处理字符串的程序或网页时,经常有

  • 我有以下密码验证规则: 至少8个字符 我试图找到这个规则的正则表达式模式,最接近的是: 但这并不适用于所有规则。 我对正则表达式是新手,如果有任何可以学习正则表达式的资源,我将不胜感激。