我是正则表达的新手。
我写了一个大写,小写,10个字符(分钟)和一个数字。
/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])\S{10,}$/g
这样可以正确验证。
我想知道我是否可以检查至少两个大写字母,两个小写字母和两个数字?
我试过了:
/^(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[0-9]{2,})\S{10,}$/g
干杯
答案 0 :(得分:1)
是的,这很简单,您只需重复两次前瞻的整个内容(使用非捕获组):
/^(?=(?:.*[A-Z]){2})(?=(?:.*[a-z]){2})(?=(?:.*[0-9]){2})\S{10,}$/
您可以使用否定字符类来改进模式:
/^(?=(?:[^A-Z]*[A-Z]){2})(?=(?:[^a-z]*[a-z]){2})(?=(?:[^0-9]*[0-9]){2})\S{10,}$/
注意:由于您使用在开头和结尾处锚定的单个模式测试所有字符串,因此您无需为全局研究添加“g”。