正则表达式复杂模式

戈兰·多利奇

我必须编写正则表达式来检查字符串:

  • 长度为 5-15 个字符
  • 至少有 2 个大写字母
  • 至少有 2 个小写字母
  • 并且有 1 位数字

我感谢任何帮助,因为我真的坚持这一点,并且不知道如何解决这个问题。

特里科特

您可以使用先行检查所有条件,然后匹配 5 到 15 个字符(任意),确保没有其他字符(^$):

^(?=(?:.*[A-Z]){2})(?=(?:.*[a-z]){2})(?=.*\d).{5,15}$

  • ^: 字符串开头
  • (?= ): 积极展望。不抓取任何字符,只是向前看是否匹配模式
  • (?: ):使该组不可捕获,即您不会将其作为可以参考的捕获组$1\1(依赖于语言)
  • .*[A-Z]: 0 个或多个字符后跟一个大写字母
  • .*[a-z]: 0 个或多个字符后跟一个小写字母
  • .*\d: 0 个或多个字符后跟一个数字
  • {2}: 前一个模式必须匹配两次
  • .{5-15}: 5 到 15 个字符。
  • $: 字符串结尾

在 JavaScript 中,您可以使用正则表达式测试字符串test,例如:

var regex = /^(?=(?:.*[A-Z]){2})(?=(?:.*[a-z]){2})(?=.*\d).{5,15}$/;

console.log(regex.test('a9B1c')); // false, missing capital letter
console.log(regex.test('a9B1cD')); // true

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章