Я проголосовал за ответ Мхарена и прокомментировал его, но, поскольку комментарии по умолчанию скрыты, позвольте мне объяснить это еще раз:
Причина, по которой вы хотите использовать валидатор регулярных выражений, а не пользовательский валидатор, заключается в том, что валидатор регулярных выражений также автоматически проверяет клиентскую часть регулярного выражения с помощью javascript, если он доступен. Если они проходят проверку, это не страшно, но каждый раз, когда кто-то не проходит проверку на стороне клиента, вы спасаете свой сервер от выполнения обратной передачи.