Zakładając, że chcesz zabronić tylko ciągów, które całkowicie pasują do wyrażenia regularnego (tj. mmblaJest w porządku, ale mmnie jest), oto czego chcesz:
^(?!(?:m{2}|t)$).*$
(?!(?:m{2}|t)$)to negatywne spojrzenie w przód ; mówi „zaczynając od bieżącej pozycji, kilka następnych znaków nie jest mm lub t, po których następuje koniec ciągu”. Start anchor ( ^) na początku zapewnia, że lookahead zostanie zastosowany na początku ciągu. Jeśli to się powiedzie, .*idzie dalej i zużywa ciąg.
FYI, jeśli używasz metody Java matches(), tak naprawdę nie potrzebujesz the ^i final $, ale nie wyrządzają one żadnej szkody. Wymagane jest jednak $wewnętrzne spojrzenie w przód.
{1}jest całkowicie bezużyteczny. (Jeśli uważasz, że zapewnia to jakąś wartość, dlaczego nie napiszesz((m{1}a{1}){1}|(t){1}){1}?)