Вы можете удалить все дефисы перед передачей строки в pattern.matcher
, а затем сопоставить отдельные числа от 10 до 14 цифр:
String inputStr = "Hi, Your Mobile no. is: 9876499321. Also, +919876499321 or 919876499321 or 09-876499321.";
String myregex = "(?<!\\d)\\d{10,14}(?!\\d)";
// Or String myregex = "\\b\\d{10,14}\\b";
Pattern pattern = Pattern.compile(myregex);
Matcher matcher = pattern.matcher(inputStr.replace("-", ""));
while(matcher.find()) {
System.out.println(matcher.group());
}
См. Java-демонстрацию , вывод:
9876499321
919876499321
919876499321
09876499321
Шаблон (?<!\d)\d{10,14}(?!\d)
соответствует 10–14 цифрам, только если они не заключены в другие цифры.