Я пытаюсь создать регулярное выражение ECMAScript (JavaScript), чтобы проверить надежность моего пароля на основе следующих критериев:
Characters Used Password Strength Length
ABC abc 123 #$& WEAK ...
1 x 1-5 ...
2 x 1-5
3 x 1-7
4 x 1-5
5 x x 1-4
6 x x 1-4
7 x x 1-4
8 x x 1-4
9 x x 1-4
10 x x 1-4
11 x x x 1-4
12 x x x 1-3
13 x x x 1-4
14 x x x 1-4
15 x x x x 1-3
Таким образом, пароли типа 2
, ABCD
, 0123456
, abCd
, aA#
и др. c. должен быть отмечен как слабый. Пароли, которые длиннее для указанной комбинации 012345678
, aA1#
, et c. не должен.
Это мой очень длинный атм регулярного выражения (который в основном склеивается через группы в соответствии с таблицей выше):
/^(([A-Za-z&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,3})|([a-z0-9&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,4})|([A-Z0-9&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,4})|([a-zA-Z0-9]{1,4})|([a-z]{1,5})|([A-Z]{1,5})|([0-9]{1,7})|([&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,5}))$/
Соответствует строкам (над таблицей): 12
/([A-Za-z&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,3})/
Соответствует строкам: 14, 9
/([a-z0-9&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,4})/
Соответствует строкам: 13, 10, 7
/([A-Z0-9&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,4})/
Соответствует строкам: 11, 8, 6, 5
/([a-zA-Z0-9]{1,4})/
Соответствует строкам: 2
/([a-z]{1,5})/
Соответствует строкам: 1
/([A-Z]{1,5})/
Соответствует строкам: 3
/([0-9]{1,7})/
Соответствует строкам: 4
/([&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]{1,5})/
Есть ли способ повторно использовать специальные символы, которые я указал внутри []
[&*@\^}\]\\):,$=!><–{[(%+#;\/~_?.]
, поэтому мне не нужно писать их все внутри каждой группы?