Ограничение количества цифр в строке
Имеется такое условие.
if (telNumber.matches("^\\d\\(\\d{3}\\)\\d{6}")) return true;
Оно у меня выводит true на такую входную строку 0(501)234567. Но может быть, что первая цифра до начала скобки может быть не одна а не сколько, но всего цифр в строке должно быть не больше 10. В скобках должно быть строго 3 цифры. Как составить выражение на ограничение количества цифр?
Ответы (1 шт):
Можно использовать следующее выражение "^(?=\\d+\\(\\d{3}\\)\\d+).{12}$", использующее positive lookahead для проверки формата:
(?=\d+\(\d{3}\)\d+) - одна или несколько цифр до первой скобки, 3 цифры в скобках, одна или несколько цифр после скобок.
и затем проверка длины строки .{12} для контроля длины 12 = 10 цифр + 2 скобки:
public static boolean isValidPhone(String phone) {
return phone.matches("(?=\\d+\\(\\d{3}\\)\\d+).{12}");
}
Аналогично, можно сперва проверить длину строки без регулярки, а затем проверять формат:
public static boolean isValidPhone(String phone) {
return phone.length() == 12 && phone.matches("\\d+\\(\\d{3}\\)\\d+");
}