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:
-
Gesamtlänge der E-Mail-ID muss sein >3 und <20.
-
Den emailId muss include"@", gefolgt von einem minimum von 1 und maximum von 2 ". " - Zeichen.
-
Den Teilstring vor dem "@" muss eine Kombination aus groß -, Kleinbuchstaben und "_"(Unterstrich) Symbole.
-
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)
sollteif(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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie darauf bestehen, mit regex kann man diese aber nutzen und ohne Prüfung richtig Sie könnten für alle Arten von Schwierigkeiten
Oder alternativ könnte man
Ist ein Kern-java-Dienstprogramm, das wäre besser...
Beachten Sie, dass weder diese Garantie eine Adresse tatsächlich gültig sind, nur, dass es richtig gebildet und so hypothetisch existieren könnte
überprüfen für die letzten drei Einschränkungen, die können Sie dann kombinieren mit
Haben Sie das Teil fein - ein paar Länge überprüft. Dinge zu beachten:
if (condition == true)
nurif (condition)
.Check für das @ - Zeichen erste und erhalten den index. Sobald Sie dass haben, können Sie split die Zeichenfolge. Sie können dann teilen Sie die substring-auf Perioden, und zählen Sie Sie - Sie wollen zwei oder drei.
Wahrscheinlich gibt es ein regex, der würde es auch tun.
Können Sie dieser Ansatz um sicherzustellen, dass Ihre regex übereinstimmen muss jedes Teil. So wie es da steht, ich glaube, dein regex funktioniert, wenn es gibt Kappen, Kleinbuchstaben, oder Unterstrich anstelle der Prüfung für alle drei.
Gleichen Kommentare wie für den ersten Teil, fallen die
== true
- und Kurzschluss-Methode, wenn es fehlschlägt.