2016-06-16 6 views
1

Ich versuche, E-Mail in Java zu validieren. Unten ist der Code:Java Regex Problem mit der E-Mail-Validierung

String mail = "[email protected]"; 
    String regex = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 
    if(mail.matches(regex)){ 
     System.out.println("valid email"); 
    }; 

Jetzt möchte ich zu 10 Zeichen und einer Länge von Text3 bis 5 Zeichen, die Länge von Text1 und Text2 zu beschränken.

ich mit dieser Regex versucht, aber hat nicht funktioniert - ^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]{2,}+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

Wie kann ich dies tun erreichen? Danke.

+0

Es wäre gut, Beispiele für E-Mail-Adressen zu haben, die korrekt sind und die nach Ihren Anforderungen inkorrekt sein sollten. –

+0

Bitte zeigen Sie auch auf diese E-Mails, welchen Teil Sie als text1/text2/text3 betrachten. –

+0

Sie sollten dies nicht tun. Gehen Sie mit etwas wie '. + @. +' Oder '. + @. + \ .. +'. Verschiedene Anbieter erlauben unterschiedliche Zeichen in der E-Mail-Adresse. Gemäß der E-Mail-Adresse können Sie jeden beliebigen Charakter eingeben, wenn Sie ihm entkommen. Gmail zum Beispiel lässt das Pluszeichen vor @ zu, für das ich keine Behandlung in Ihrer Regex sehe. Gmail lässt sogar einen Punkt als erstes Zeichen zu, das gemäß der E-Mail-Adressspezifikation ungültig ist. –

Antwort

0

Hier ist die regex:

String regex = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]{0,10})*@[A-Za-z0-9]+(\\.[A-Za-z0-9]{0,10})*(\\.[A-Za-z]{0,5})$"; 

Dies gilt nicht Punkte als Zeichen zählen, verwendet {n, m} Syntax, es begrenzt die Anzahl der Zeichen zwischen n und m Vorkommen zu sein.