Я не уверен, что понимаю ваш вопрос, но что плохого в том, чтобы просто использовать ^[0-9a-zA-Z]{2,30}$
?
Вы можете делать утверждения, используя предпросмотр для проверки длины.
Например, добавьте (?!.{31,})
в начало вашего регулярного выражения после ^
, что является негативным прогнозом, говорящим, что если есть 31 или более символов, не совпадают. Это не обязательно для этого случая, хотя. Я хотел бы использовать что-то подобное в проверке пароля, например. например (?=.{8,})
утверждает, что оно должно содержать не менее 8 символов.
Ответ от Rick Olson = http://en.wikipedia.org/wiki/Quentin_Quire