Проблема в том, что вы возвращаете true, только если вся строка состоит из ровно трех идентичных символов.Из-за ваших дополнительных проверок валидация ведет себя точно так же, как ^([a-zA-Z])\1{2}$
.
Подход
return match.Success;
- это тот, который вы должны использовать.
В качестве альтернативы вы также можете изменить свое регулярное выражение следующим образомthis:
^.*([a-zA-Z])\1{2}.*$
Или, если вы хотите сопоставить строку, в которой есть другие символы между повторяющимися, вы можете использовать этот шаблон:
^.*([a-zA-Z])(.*\1){2}.*$
Редактировать:
Поскольку этот вопрос касается регулярного выражения для RegularExpressionAttribute
, факт, который я как бы упустил из виду при ответе, весь первый абзац можно игнорировать.