Размер строки ограничения регулярного выражения

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

/^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/

Мне просто нужно добавить квантификатор {3,16}.

Ответ 1

Посыпьте в некоторый положительный lookahead, чтобы проверить общую длину строки, например,

/^(?=.{3,16}$)[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/

Ответ 2

Я не знаю, зачем вам это нужно, но вы можете попытаться разделить свое выражение на 2 строки и связать их позже. Вы уверены, что нет другого способа проверить ваш ввод? Как уже существующая библиотека или что-то еще.

Ответ 3

Использовать регулярное выражение

/^[a-z](?:[a-z\d]|_(?!_)){1,14}[a-z\d]$/

или

/^(?=.{3,16}$)[a-z][a-z\d]*(?:_[a-z\d]+)*$/