import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Domain {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter an email address: ");
String email = scanner.nextLine();
vallidate(email);
Domain domain = new Domain();
System.out.println("Output: ");
System.out.println(domain.extractDomain(email));
}
private static void vallidate(String email) {
Pattern p = Pattern.compile("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
Matcher m = p.matcher(email);
if(!m.matches()) {
throw new IllegalArgumentException("The email you entered is not valid '" + email + "'");
}
}
}
Bardzo bym prosił o wytłumaczenie jak jest zbudowany pattern w metodzie vallidate. Czytałem dokumentację javy, ale niestety jako początkujący programista nie jestem w stanie jej zrozumieć na tyle, żeby wiedzieć co tutaj się dzieje. Jakby ktoś mi mógł opisać po ludzku jak jest to zbudowane, żebym trochę załapał i dalej już sobie poradzę. Wiem, że to A-Za itd to jest zakres itp, ^ to początek a $ to koniec, ale co robią te znaczki mnożenia, _ \ i . nie mam pojęcia.