Для m к n повторений используйте {m, n}. Так что регулярное выражение будет ^[a-z0-9][-_. a-z0-9]{3,63}[a-z0-9]$
Редактировать: не совсем то, что вы просите. Но это должно помочь с правильной реализацией. Чтобы узнать регулярные выражения, попробуйте это https://regexone.com/
Вы могли попробовать одну из реализаций Бобовой проверки JSR 303. Я не думаю, что это завершено все же, но существует несколько реализаций вокруг подобного, в спящем режиме Блок проверки допустимости и Проверка Agimatec. Я не попробовал ни одного, но прочитывающий некоторые примеры того, как Бобовая Проверка будет использоваться, заставляет его выглядеть многообещающим. Вот интервью с выводом спецификации. То, что я люблю больше всего о предложении, - то, что правила проверки могут быть снова использованы в различных слоях и с различными платформами. Можно выбрать между аннотациями и xml для того, чтобы сделать 'объявление'.
Наконец Вы могли бы хотеть проверить Разработчиков Java Swing, который обеспечивает декларативный путь к определению графический интерфейсов пользователя и выполнению проверки и привязки данных с Swing.
Только необходимо записать ужасные модели проверки однажды. Вы можете их использовать их "декларативным способом". Фактические полезные библиотеки Swing являются более трудным вопросом.
Вы можете посмотреть на мою попытку создать сборщик графического интерфейса Swing, который использует проверку JSR303 с помощью Hibernate Validator: http://code.google.com/p/swing-formbuilder/