Регулярное выражение для js regex

Есть проблемы с написанием регулярного выражения. Задача: Создать регулярное выражение с набором правил

  • только латиница
  • общее количество символов - от 8 до 30
  • Должно включать в себя либо хотя-бы одну цифру, либо хотя-бы один спецсимвол. (хотя бы либо одно, либо другое, или все сразу)

Пример: TestTest5 , TestTest! , TestTest!5

Выражение формата: ^((?=.\d)(?=.\W)(?=.*[A-Z]).{8,30})$ требует ввод и спецсимвола и цифры обязательно. По отдельности - не срабатывает.

Переписанное под "Или" выражение ^(({(?=.\d)|(?=.\W)})(?=.*[A-Z]).{8,30})$ не работает. Верятно - написано криво синтаксически. Буду очень признателен с решением текущей проблемы.


Ответы (1 шт):

Автор решения: Фитц Чивэл

Решение найдено:

^(?=.*[A-Z])(?=.*[a-z])((?=.*\d)|(?=.*[@$!%*#?&]))[A-Za-z\d@$!%*#?&]{8,}$
→ Ссылка