Регулярные выражения в качестве констант
Есть обычная задача на валидацию вводимых данных(код ниже)
Как преобразовать регулярки в константы и обращаться к ним при проверке ? .matches не работает с Pattern
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter name and last name: ");
String name = in.nextLine();
System.out.print("Enter phone number: ");
String num = in.nextLine();
System.out.print("Enter email: ");
String mail = in.nextLine();
boolean res1 = name.matches("^([A-Z][a-z]*((\\s)))+[A-Z][a-z]*$");
if (res1) {
System.out.println("Name validation successful");
}
else {
System.out.println("Illegal. Name must contains only A-Z, a-z and space");
}
boolean res2 = num.matches("(\\+)\\d{12}");
if (res2) {
System.out.println("Phone number validation successful");
}
else {
System.out.println("Illegal. Phone number must contains only numbers and +");
}
boolean res3 = mail.matches("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$");
if (res3) {
System.out.println("Email validation successful");
}
else {
System.out.println("Illegal. Email address must be in a format: (A-Z,0-9,_.+-)@(A-Z0-9.-).[A-Z]");
}
}
}
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Например, сохраните их в поля класса как final static String и используйте сколько нужно:
final static String PATTERN_PHONE = "(\\+)\\d{12}";
public static void main(String[] args) throws Exception {
String num = "123456789000";
boolean res2 = num.matches(PATTERN_PHONE);
if (res2) {
System.out.println("Phone number validation successful");
}
else {
System.out.println("Illegal. Phone number in a format " + PATTERN_PHONE);
}
}