[a-z0-9-\]+@[a-z0-9-\]+.[a-z]+
Ich denke mal, du hast die Begrenzer für Wortanfang und Wortende vergessen. Ohne diese dürfen vor und nach dem regulären Ausdruck ja beliebige andere Zeichen stehen. Probier mal Folgendes:
^\A[a-z0-9-\]+@[a-z0-9-\]+.[a-z]+$