Dengan asumsi Anda hanya ingin melarang string yang benar-benar cocok dengan ekspresi reguler (yaitu, mmbla
tidak masalah, tetapi mm
tidak), 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}
?)