В Украине на 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
