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