Регулярное выражение для проверки надежности пароля

Я написал регулярное выражение, которое потенциально может быть использовано для проверки надежности пароля:

^(?:([A-Z])*([a-z])*(\d)*(\W)*){8,12}$

Выражение состоит из четырех групп:

Ноль или более заглавных буквНоль или более строчных буквНоль или более десятичных цифрНоль или более несловарных символов (!, £, $,% и т. Д.)

Я хочу, чтобы это работало, чтобы определить, сколько групп было сопоставлено, чтобы определить надежность пароля. так, например, если сопоставляется только 1 группа, она будет слабой. Если бы все четыре группы были сопоставлены, это было бы сильно.

Я проверил выражение, используяRubular (редактор регулярных выражений Ruby).

Здесь я вижу наглядно, сколько групп соответствует, но я хочу сделать это в JavaScript. Я написал скрипт, который возвращает количество подходящих групп, но результаты были не такими, как я вижу в Rubular.

Как я могу добиться этого в JavaScript? и мое регулярное выражение до задачи?

Ответы на вопрос(6)

Ваш ответ на вопрос