У меня есть элемент проверки, который имеет следующее выражение:
(?=(.*\\d.*){2,})(?=(.*\\w.*){2,})(?=(.*\\W.*){1,}).{8,}
Это пароль с не менее 2 цифрами, 2 альфа-символами, 1 не-буквенно-числовой и минимум 8 символов. К сожалению, это не похоже на кросс-браузер.
Эта проверка отлично работает в Firefox, но не в Internet Explorer.
Комбинация каждого из ваших ответов приводит к:
var format = "^(?=.{" + minLength + ",})" +
(minAlpha > 0 ? "(?=(.*[A-Za-z].*){" + minAlpha + ",})" : "") +
(minNum > 0 ? "(?=(.*[0-9].*){" + minNum + ",})" : "") +
(minNonAlpha > 0 ? "(?=(.*\\W.*){" + minNonAlpha + ",})" : "") + ".*$";
EX: "^(?=.{x,})(?=(.*[A-Za-z].*){y,})(?=(.*[0-9].*){z,})(?=(.*\W.*){a,}).*$"
Важная часть имеет (?. {x,}) для длины сначала.