需要正则表达式来检查至少3个大写,3个小写,3个数字和3个特殊字符

4 regex

需要正则表达式来检查字符串中的至少3个大写,3个小写,3个数字和3个特殊字符.

我试过/^(?=.*[^A-Za-z0-9]{3,})(?=.*[A-Z]{3,})(?=.*\d{3,})(?=.*[0-9]{3,}).+/ 但是这个检查连续的字符串像:: abcABC123(*)但没有检查像:1a(2b)AB*3cC

Boh*_*ian 7

你很接近:你需要将.*你的前瞻中的角色类括起来:

^(?=(.*[^A-Za-z0-9]){3})(?=(.*[A-Z]){3})(?=(.*\d){3}).+
Run Code Online (Sandbox Code Playgroud)

其工作原因是字符类型可能不相邻,例如3个数字a1b2c3,因此.*允许其他插入字符类型.

请注意,您不需要开放式量词.例如(.*\d){3},足以断言至少有3位数 - 即不是...{3,}


最后一点:那些前导/尾随斜杠与正则表达式没有任何关系 - 它们是应用程序语言的假象.如果忽略问题,它会使更多人的问题和答案更清晰,更有用.