首页 > 解决方案 > 正则表达式验证问题

问题描述

我正在使用

^(?=^.{14,30}$)(?=^.[\d]{3}$)(?=^.[a-z]{4}$)(?=^.[A-Z]{5}$)(?=^.[!*&#$%^]{2}).$

正则表达式,以验证以下作为最低要求:

  1. 四个小写字母
  2. 五个大写字母
  3. 三位数
  4. 两个特殊字符
  5. 总长度在 14 到 30 个字符之间

但不幸的是,这个验证模式不能验证我的字符串。
我正在寻找regex模式验证并告诉我模式是好的
有人可以给我一个支持吗?

标签: htmlregexvb.net

解决方案


请注意,(?=^.[a-z]{4}$)需要匹配 5 个字符的字符串,其中第一个 csn 是任何字符,然后必须有 4 个小写字母。最后, after^和 lookaheads,有.before $,所以实际上,整个正则表达式可以匹配单个 char 字符串。

您可以使用

^(?=(?:\D*\d){3})(?=(?:[^a-z]*[a-z]){4})(?=(?:[^A-Z]*[A-Z]){5})(?=(?:[^!*&#$%^]*[!*&#$%^]){2}).{8,30}$

请参阅正则表达式演示。正则图

在此处输入图像描述

细节

  • ^- 字符串的开始
  • (?=(?:\D*\d){3})- 任何 0+ 非数字出现 3 次,后跟一个数字
  • (?=(?:[^a-z]*[a-z]){4})- 任何 0+ 字符出现四次,除了小写 ASCII 字母后跟小写 ASCII 字母
  • (?=(?:[^A-Z]*[A-Z]){5})- 任何 0+ 字符出现五次,除了大写 ASCII 字母后跟一个大写 ASCII 字母
  • (?=(?:[^!*&#$%^]*[!*&#$%^]){2})- 除了某些特定的特殊字符(在字符类中定义)之外,任何 0+ 字符出现两次,后跟来自 sepcified!*&#$%^集中的字符
  • .{8,30}- 任何 8 到 30 个字符
  • $- 字符串结束。

推荐阅读