У меня есть куча чисел, которые я хочу разобрать.Regex для соответствия различным форматам телефонных номеров
+79261234567
89261234567
79261234567
9261234567
+7 926 123 45 67
8(926)123-45-67
123-45-67
79261234567
(495)1234567
(495) 123 45 67
89261234567
8-926-123-45-67
8 927 1234 234
8 927 12 12 888
8 927 12 555 12
8 927 123 8 123
То, что я пришел с в первом будет перебирать все варианты, как этого
(\+[\d]{11}|[\d]{10,11}|\+\d\ [\d]{3}\ [\d]{3}\ [\d]{2}\ [\d]{2}|\d\([\d]{3}\)[\d\-]{9}|[\d\ ]{14,15}|[\d\-]{14,15}|[\d\-]{9}|\(\d\d\d\)[\d\-]{9,10}|\(\d\d\d\)[\d\ ]{9,10}|\(\d\d\d\)[\d\-]{7})
Есть ли более элегантный способ, чтобы соответствовать этим цифрам?
Это не очень элегантно, пытаясь захватить _все_ возможные способы записи телефонного номера, поэтому я думаю, что нет элегантного регулярного выражения. –
Я бы просто проверил, содержит ли строка минимальное количество цифр, и пусть пользователь вводит свой номер телефона;) –
Согласен. Почему бы не удалить из вашего ввода ничего, кроме цифр и знаков плюс ('[^ + 0-9] +' "), а затем разобрать остальные? –