регулярное выражение для получения мобильных номеров с пробелом из строки PHP - PullRequest
2 голосов
/ 30 марта 2019

У меня есть регулярное выражение, которое будет извлекать все мобильные номера в формате +91-9544xxxxxx.

Но в моей строке PHP могут быть числа типа +91 9544x XXXXX или 919544X XXXXX или 9544-xxx-xxx

Как получить эти данные с помощью регулярных выражений?

+91 countrycode
Mobile numbers are 10 digit long : +91-9876543210

EX: если строка содержит 91, то и следующие 10 цифр, исключая пробел, являются цифрами, считайте это числом. или если строка содержит 95440 и сопровождается пробелом и 5 числами, то это также номер мобильного телефона. или, если это 9544-xxx-xxx, это тоже число.

Мое регулярное выражение (?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[6789]\d{9}

Я пытался (?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[6789]\d\s{9} Но я ничего не получаю.

preg_match_all("/(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[6789]\d\s{9}/", $words, $num);

1 Ответ

1 голос
/ 30 марта 2019

Вы можете написать \d как [ -]*\d, если вы хотите опционально разрешить пробел или дефис с числами.Кроме того, экранирование - не является необходимым, если оно присутствует внутри набора символов, и, как в одном из ваших примеров, я вижу, что вы хотите разрешить только пробел вместо простого дефиса, я изменяю ваш [\-] на [ -].Кроме того, вы должны использовать начальные / конечные ^ и $ якоря, чтобы избежать частичного совпадения в тексте. Кроме того, вы можете использовать это регулярное выражение,

^(?:(?:\+|0{0,2})91(\s*[ -]\s*)?|[0]?)?[6789](?:[ -]*\d){9}$

Демо

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