В Украине на 2020 год существует три крупных мобильных оператора и три не больших.
Для полного понимания того, что описано далее, сразу оговорю несколько моментов
Используется Python 3 верcии и соответственно регулярные выражения будут под эту версию, будет ли это работать с предыдущими версиями, я не знаю
Для работы с регулярными выражениями будет использована встроенная библиотека re
Х — любая цифра
phone — номер телефона в формате 380ХХХХХХХХХ
Коды и регулярные выражения для python больших операторов:
Kyivstar:
Коды сети мобильной связи — 067,068, 096, 097, 098. Количество абонентов — 26,4 млн (в третьем квартале 2019).
Код | Номер полностью | Регулярное выражение |
---|---|---|
098 | 38098XXXXXXX | re.match(r'^38098[0-9]{7}$', phone) |
097 | 38097XXXXXXX | re.match(r'^38097[0-9]{7}$', phone) |
096 | 38096XXXXXXX | re.match(r'^38096[0-9]{7}$', phone) |
068 | 38068XXXXXXX | re.match(r'^38068[0-9]{7}$', phone) |
067 | 38067XXXXXXX | re.match(r'^38067[0-9]{7}$', phone) |
Регулярное выражение для определения оператора Киевстар с учетом всех его кодов:
re.match(r'^3806[7,8][0-9]{7}$|^3809[6-8][0-9]{7}$', phone)
Lifecell:
Код сети мобильной связи — 063, 073, 093 . Количество абонентов — 6,9 млн абонентов (в третьем квартале 2019).
Код | Номер полностью | Регулярное выражение |
---|---|---|
063 | 38063XXXXXXX | re.match(r'^38063[0-9]{7}$', phone) |
073 | 38073XXXXXXX | re.match(r'^38073[0-9]{7}$', phone) |
093 | 38093XXXXXXX | re.match(r'^38093[0-9]{7}$', phone) |
Регулярное выражение для определения оператора Лайфселл с учетом всех его кодов:
re.match(r'^380[6,7,9]3[0-9]{7}$', phone)
Vodafone (MTS):
Код сети мобильной связи — 050, 066, 095, 099 . Количество абонентов — 19,6 млн абонентов (в первом квартале 2019).
Код | Номер полностью | Регулярное выражение |
---|---|---|
050 | 38050XXXXXXX | re.match(r'^38050[0-9]{7}$', phone) |
066 | 38066XXXXXXX | re.match(r'^38066[0-9]{7}$', phone) |
095 | 38095XXXXXXX | re.match(r'^38095[0-9]{7}$', phone) |
099 | 38099XXXXXXX | re.match(r'^38099[0-9]{7}$', phone) |
Регулярное выражение для определения оператора Водафон (МТС)с учетом всех его кодов:
re.match(r'^38050[0-9]{7}$|^38066[0-9]{7}$|^3809[5,9][0-9]{7}$', phone)
Trimob:
Код сети мобильной связи — 091. Количество абонентов — 250 тысяч (20 апреля 2018 года).
Код | Номер полностью | Регулярное выражение |
---|---|---|
091 | 38091XXXXXXX | re.match(r'^38091[0-9]{7}$', phone) |
Регулярное выражение для определения оператора Тримоб с учетом всех его кодов
re.match(r'^38091[0-9]{7}$|^3809[6-8][0-9]{7}$', phone)
PEOPLEnet :
Код сети мобильной связи — 092. Количество абонентов — более 1 млн (конец 2019).
Код Номер полностью Регулярное выражение
092 38092XXXXXXX re.match(r'^38092[0-9]{7}$', phone)
Регулярное выражение для определения оператора PEOPLEnet с учетом всех его кодов
re.match(r'^38092[0-9]{7}$|^3809[6-8][0-9]{7}$', phone)
Интертелеком:
Код | Номер полностью | Регулярное выражение |
---|---|---|
094 | 38094XXXXXXX | re.match(r'^38094[0-9]{7}$', phone) |
Регулярное выражение для определения оператора Интертелеком с учетом всех его кодов
re.match(r'^38094[0-9]{7}$|^3809[6-8][0-9]{7}$', phone)
Ну и пример функции, которая вернёт имя мобильного оператора, если ей передать номер телефона
def get_operator(phone): phone = str(phone) lifecell = re.match(r'^380[6,7,9]3[0-9]{7}$', phone) kyivstar = re.match(r'^38067[0-9]{7}$|^3809[6-8][0-9]{7}$', phone) vodafone = re.match(r'^38050[0-9]{7}$|^38066[0-9]{7}$|^3809[5,9][0-9]{7}$', phone) intertelecom = re.match(r'^38094[0-9]{7}$|^3809[6-8][0-9]{7}$', phone) trimob = re.match(r'^38091[0-9]{7}$|^3809[6-8][0-9]{7}$', phone) peoplenet = re.match(r'^38092[0-9]{7}$|^3809[6-8][0-9]{7}$', phone) if lifecell: operator = 'lifecell' elif kyivstar: operator = 'kyivstar' elif vodafone: operator = 'vodafone' elif intertelecom: operator = 'intertelecom' elif trimob: operator = 'trimob' elif peoplenet: operator = 'peoplenet' else: operator = 'no_mobile' return operator