Извлечь номер мобильного телефона из строки с помощью регулярных выражений - PullRequest
0 голосов
/ 18 июня 2019

Я хочу извлечь номер мобильного телефона из строки.
Пример строки: "Hi, Your Mobile no. is: 9876499321."

Теперь я хочу извлечь "9876499321" из строки.Моя основная строка может содержать +919876499321 или 919876499321 или 09876499321 внутри строки вместе с другими словами.Как этого добиться?

Правила, которые я хочу:

  1. Прежде всего удалите все "-"
  2. Затем извлеките число, которое может варьироваться от 10 до 14 цифр(включительно)

Я пробовал это:

String myregex = "^\\d{10}$";
Pattern pattern = Pattern.compile(myregex);
Matcher matcher = pattern.matcher(inputStr);

while (matcher.find()) {
    System.out.println(matcher.group());
}

Я не могу найти ни одного совпадения.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вы можете удалить все дефисы перед передачей строки в 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 цифрам, только если они не заключены в другие цифры.

0 голосов
/ 18 июня 2019

Если это всегда последние 10 цифр строки из 10 и более цифр, вы можете сделать следующее:

String myregex = "^.*(\\d{10})([^\\d].*|$)";

И используйте matcher.group(0) вместо matcher.group().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...