Dengan asumsi Anda hanya ingin melarang string yang benar-benar cocok dengan ekspresi reguler (yaitu, mmblatidak masalah, tetapi mmtidak), inilah yang Anda inginkan:
^(?!(?:m{2}|t)$).*$
(?!(?:m{2}|t)$)adalah negatif lookahead ; itu mengatakan "mulai dari posisi saat ini, beberapa karakter berikutnya bukan mm atau t, diikuti oleh akhir string." Start anchor ( ^) di awal memastikan bahwa lookahead diterapkan di awal string. Jika berhasil, .*lanjutkan dan konsumsi string.
FYI, jika Anda menggunakan matches()metode Java , Anda tidak benar-benar membutuhkan yang ^dan yang terakhir $, tetapi tidak ada salahnya. Namun, $bagian dalam lookahead diperlukan.
{1}sama sekali tidak berguna. (Jika menurut Anda itu memberikan nilai, mengapa Anda tidak menulis((m{1}a{1}){1}|(t){1}){1}?)