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

Есть у меня такое регулярное выражение для проверки email.

/^[\S-\.]+@([\w-]+\.)+([\w-]{2,5})$/

Но проблема в том, что необходимо ограничить количество символов до 60. И сделать это желательно через регулярку.

Да и хотелось бы узнать, как ограничивать количество вводимых символов в подобной регулярке.


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

Автор решения: splash58

добавьте в начало выражения

(?=^.{1,60}$)

чтобы проверить, что в строке от 1 до 60 символов

→ Ссылка
Автор решения: Wiktor Stribiżew

Используйте блок предварительного просмотра сразу после проверки начала строки:

/^(?=.{1,60}$)\S+@(?:[\w-]+\.)+[\w-]{2,5}$/

См. пример использования регулярного выражения.

Заметьте, что [\S-\.] - это то же, что и \S. Подробности:

  • ^ - начало строки
  • (?=.{1,60}$) - позитивный блок предварительного просмотра вперёд, который требует наличия от одного до 60 символов, отличных от символов перевода строки, до конца строки
  • \S+ - один и более непробельных символов
  • @ - символ @
  • (?:[\w-]+\.)+ - один и более повторов одного и более букво-цифровых символов, символов нижнего подчёркивания или дефисов и символа точки
  • [\w-]{2,5} - 2-5 букво-цифровых символов, символов нижнего подчёркивания или дефисов
  • $ - конец строки.
→ Ссылка