Java-Programm - E-Mail-Adresse die überprüfung mit Strings und RegEx

Das problem Erklärung geht so:

Müssen wir einen String-Datentyp mit dem Namen emailId

Die E-Mail-ID eingestellt werden, mit entsprechenden setter-Methoden.

Überprüfung-Regeln für die E-Mail-ID-Prüfung durchgeführt werden müssen, in der main().

Bedingungen sind:

  1. Gesamtlänge der E-Mail-ID muss sein >3 und <20.

  2. Den emailId muss include"@", gefolgt von einem minimum von 1 und maximum von 2 ". " - Zeichen.

  3. Den Teilstring vor dem "@" muss eine Kombination aus groß -, Kleinbuchstaben und "_"(Unterstrich) Symbole.

  4. Den ersten Buchstaben der E-Mail-Id muss im Oberen Fall.

Wenn alle oben genannten Bedingungen sind gültig, es sollte die Anzeige "E-Mail-ID ist gültig" oder anderes, sollte es display eine entsprechende Fehlermeldung

Dies ist mein code:

public class EmailCheck {

String emailId;
public void setEmailId(String emailId){
    this.emailId=emailId;
}
public String getEmailId(){
    return emailId;
}
public static void main(String[] args) {
    EmailCheck em = new EmailCheck();
    em.setEmailId("[email protected]");
    String email = em.getEmailId();
    int length = email.length();
    boolean flag1 = false;
    boolean flag2 = false;
    boolean flag3 = false;
    boolean flag4 = false;
    boolean flag5 = false;
    boolean flag6 = false;
    boolean flag7 = false;
    int count = 0;


    //Condition 1 
    if((length>3 && length<20)== true)
        flag1 = true;
    else 
        flag1 = false;

    //Condition 2
        int temp = email.length();
        if(email.contains("@")){
            flag2=true;
            int a=email.indexOf("@");
             for(int i=a;i<temp;i++){
        if(email.charAt(i)=='.'){
        flag3=true; 
        count=count+1;
        }
        }
        if(count<1||count>2){
        flag4=false;
        }
        else{
        flag4=true;
        }
        }
        else{
        flag2 =false;
        System.out.println("No @ symbol present");
        }


    //Condition 3
    if(email.matches("[A-Z a-z _]+@.*")) //Unable to get the right RegEx here!
        flag5 = true;
    else
        flag5 = false;

    //Condition4
    if(Character.isUpperCase(email.charAt(0))==true)
            flag6 = true;
    else
        flag6=false;

    if(flag1==true && flag2==true && flag3==true && flag4==true && flag5==true &&flag6==true)
        System.out.println("Email ID is valid");
    else{
        if(flag1==false)
            System.out.println("Inavlid length of Email ID");
        if(flag2==false||flag3==false||flag4==false)
            System.out.println("Invalid Position of Special Characters");
        if(flag5==false)
            System.out.println("Invalid combination for username");
        if(flag6==false)
            System.out.println("Invalid case of first letter");
    }


}
}

Ich bin nicht sicher, dass die Bedingung #2(der Logik?) und Bedingung #3(die RegExp-Teil). Einige der Testfälle korrekt sind, der rest von Ihnen sind falsch(aufgrund von fehlerhaften Logik in #2 und esp #3, denke ich.)

Bitte, sagen Sie mir, welche Veränderungen durchgeführt werden müssen, um hier um den richtigen Ausgang.
Danke!

  • Jeder Ihrer Validierung Regeln, ist falsch. Tun Sie das nicht.
  • Randnotiz: if((length>3 && length<20)== true) sollte if(length>3 && length<20)
  • Können Sie bitte vorschlagen, was ich verbessern sollte?
  • Falsch ist subjektiv. Das könnte richtig sein unter bestimmten Umständen. Klingt Klasse aber funktionieren
  • Loszuwerden Sie alle. Die Regeln für gültige E-Mail-Adressen sind äußerst kompliziert; Sie sollte benutzen commons.apache.org/proper/commons-validator/apidocs/org/apache/...
  • stackoverflow.com/questions/201323/...
  • Ich kann mir nicht vorstellen, dass es eine vernünftige Umstände, in denen die Regeln Recht.
  • Oh! Ich werde das prüfen. Ich bin nur ein Anfänger in Java, die Programmierung dieses für eine java-101-Klasse, also haben wir mit ein paar Regeln, um die Griffigkeit der Programmierung, das ist alles.
  • Ja, das ist Unterricht. Grundlagen der Java-Programmierung.
  • dieser code ist so falsch, meine JVM ist zu Weinen
  • [A-Z][a-zA-Z_]*(?<=_)(?<=[A-Z])(?<=[a-z])@.{1,2}(?<=.{4,19}) krank werfen ein Einzeiler.
  • Alle 4 Bedingungen müssen nicht in der gleichen reg-Ausdruck. Nur die RegExp für Bedingung #3 würde ausreichen.

InformationsquelleAutor user2377778 | 2013-05-13
Schreibe einen Kommentar