【问题标题】:Regex for 1 uppercase and 2 lowercase letters, 2 digits, and 2 non-alphanumeric characters1 个大写字母和 2 个小写字母、2 个数字和 2 个非字母数字字符的正则表达式
【发布时间】:2021-05-24 13:28:00
【问题描述】:

我正在尝试为包含 1 个大写字母和 2 个小写字母、2 个数字和 2 个非字母数字字符的字符串创建正则表达式,现在我有:

(?=.*\d{2})(?=.*[a-z]{2})(?=.*[A-Z])(?=.*\W{2})

问题是这个正则表达式中的字符必须更严格,而我不需要这种情况。

我需要接受的解决方案:

Taa12@!
T1a1b@!
a1!b@2A

【问题讨论】:

    标签: regex validation


    【解决方案1】:

    你可以使用

    ^(?=(?:\D*\d){2})(?=(?:[^a-z]*[a-z]){2})(?=[^A-Z]*[A-Z])(?=(?:\w*\W){2})
    

    请参阅regex demo

    详情

    • ^ - 字符串开头
    • (?=(?:\D*\d){2}) - 至少两位数的字符(不一定是连续的)
    • (?=(?:[^a-z]*[a-z]){2}) - 至少两个小写 ASCII 字母(不一定是连续的)
    • (?=[^A-Z]*[A-Z]) - 至少一个 ASCII 字母
    • (?=(?:\w*\W){2}) - 至少两个非单词字符(不一定是连续的)

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      相关资源
      最近更新 更多