При попытке создать функцию jquery, которая проверяет, соответствует ли пароль определенным требованиям, пароль должен содержать как минимум 3 символа в верхнем регистре, цифры или специальные символы.Это может быть сочетание трех, так что это могут быть 2 заглавные буквы и одна специальная и т. Д.Кажется, я не могу понять, как.
$('#Password').blur(function () {
var pswd = $(this).val();
if (pswd.length > 7) {
if (pswd.match(/(?=(.*[A-Z].*){3,}).{7,}/) // 3 caps
||
pswd.match(/(?=(.*\W.*){3,}).{7,}/) // 3 special chars
||
pswd.match(/(?=(.*\d.*){3,}).{7,}/) // 3 digits
||
(pswd.match(/(?=(.*[A-Z].*){2,})/ && pswd.match(/(?=(.*\W.*){1,})/))) // 2 caps 1 special
||
(pswd.match(/(?=(.*[A-Z].*){1,})/ && pswd.match(/(?=(.*\W.*){2,})/))) // 1 cap 2 special
||
(pswd.match(/(?=(.*[A-Z].*){2,})/ && pswd.match(/(?=(.*\d.*){1,})/))) // 2 cap 1 digit
||
(pswd.match(/(?=(.*[A-Z].*){1,})/ && pswd.match(/(?=(.*\d.*){2,})/))) // 1 cap 2 digit
||
(pswd.match(/(?=(.*\W.*){2,})/ && pswd.match(/(?=(.*\d.*){1,})/))) // 2 special 1 digit
||
(pswd.match(/(?=(.*\W.*){1,})/ && pswd.match(/(?=(.*\d.*){2,})/))) // 1 special 2 digit
||
(pswd.match(/(?=(.*\W.*){1,})/ && pswd.match(/(?=(.*\d.*){1,})/) && pswd.match(/(?=(.*[A-Z].*){1,})/)))
) // 1 of each /
{
$('#Message').hide();
}
} else {
$('#Message').show();
}
});
Функция работает нормально, но я хочу улучшить регулярное выражение, возможно ли выполнить ту же проверку пароля за меньшее время или уменьшить код.