Regex密码包含两个独立的数字



在javascript 中

至少八个字符,其中两个单独的数字,

一个大写字母和一个小写字母以及

一个特殊字符(-,@,#,$,&,*,+(不是/!,?或";

尝试过很多东西,都无法得到至少2位数字分隔的

从开始

/^(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[-@#$&*+]).{8,}([^/!?"])$/

尝试使用的变体

(?=.*d(?!d))
(?=.*(?<!d)d)

请帮忙。

关于您尝试的模式

  • 此模式(?=.*d(?!d))匹配不直接跟在数字后面的数字
  • 此模式(?=.*(?<!d)d)与不直接在数字前面的数字匹配

但这两种模式都不能确保实际存在2位


您可以断言一个数字,至少一个非数字,然后再断言一个。

由于您不想匹配这个字符类[^/!?"]中的任何一个,您可以从模式中省略它,只匹配允许的字符,因为.匹配任何字符。

^(?=.*d[^dn]+d)(?=.*[a-z])(?=.*[A-Z])(?=.*[-@#$&*+])[-@#$&*+dA-Za-z]{8,}$
  • ^字符串开始
  • (?=.*d[^dn]+d)断言2个独立数字
  • (?=.*[a-z])断言字符a-z
  • (?=.*[A-Z])断言字符a-Z
  • (?=.*[-@#$&*+])断言被认为是特殊的字符之一
  • [-@#$&*+dA-Za-z]{8,}匹配8次或更多次任何允许的字符
  • $字符串末尾

Regex演示

或者使用与否定字符类的对比度的变体:

^(?=.*d[^dn]+d)(?=[^a-zn]*[a-z])(?=[^A-Zn]*[A-Z])(?=[^-@#$&*+n]*[-@#$&*+])[-@#$&*+dA-Za-z]{8,}$

Regex演示

最新更新