Я реализовал только это, Марк.Я работаю на оператора мобильной связи и имею международную заявку на отправку SMS.Я не знаю ни о каких сторонних библиотеках, которые реализуют эти правила.Как упомянуто выше, нельзя просто иметь дело со случайным вводом, поскольку форматы телефонных номеров различаются в разных странах.В некоторых странах, таких как Германия, есть коды городов и номера телефонов переменной длины.Если они не вставят туда код страны, вы провалились.Тем не менее, в моем случае я могу предположить, что если отсутствует код страны, это номер телефона США.Результаты моего фильтра оказались очень точными с пользователями и входными данными, которые у меня были.
Можно сделать некоторые предположения, и, зная целевую аудиторию, регистрируя входные данные и анализ, можно получитьнабранные вещи. Моя первая реализация была для веб-приложения "white label", которое используется для тестирования различными людьми по всему миру.Я быстро обнаружил, что большинство иностранных людей действуют вместе и привыкли к квази-стандартному формату.Обычно американцы вводят номера телефонов, которые наиболее запутаны.Европейцы очень привыкли к международному набору номера.
Первое правило - убрать все, кроме цифр и начального «+».
Если полученный номер содержит менее 8 цифр, это мусор, укажитеошибка пользователя.
Если результирующее число начинается с «+», предположите, что это стандартный формат, а следующие 2–6 цифр представляют «код страны».Выясните код страны, затем обработайте оставшиеся цифры в соответствии с правилами для этой страны.
Если номер начинается с 0, предположим, что кто-то вставил префикс международного доступа и убрал первые 0 и 1, затем:если оставшееся число составляет 10 цифр, предположим, что это был номер США, введенный американцем, и обработайте соответствующим образом.Если оставшееся число не 10 цифр, а не менее 8, предположим, что первые 2-6 цифр являются кодом страны, найдите код страны и выполните обработку в соответствии с правилами этой страны.
Если номер начинается сa 1, и это всего 11 цифр, предположим, что это номер США (или острова Карибского бассейна), и обработайте соответствующим образом.
ЕСЛИ число начинается с 1 и не равно 11 цифрам, уберите первые 1посмотрите, осталось ли по крайней мере 8 цифр, и предположим, что оставшиеся первые 2-6 цифр являются кодом страны и обрабатываются в соответствии с правилами страны.
Наконец, номер не начинается с +, 0 или1 и состоящий как минимум из 8 цифр, предположим, что он находится в стандартной записи без +, то есть кода страны в первую очередь, используйте первые 2–6 цифр в качестве кода страны и обрабатывайте его в соответствии с правилами этой страны.
Хитрость во всем этом заключается в том, чтобы иметь отображение всех кодов стран мира и информацию о плане нумерации для каждой страны.У меня есть эта карта и правила для многих стран.Если вам нужна эта информация, я с удовольствием поделюсь с вами кодом C #, который определяет, какая страна.Напишите мне.
Огромная помощь в этом заключается в отправке назад названия страны, которую ваше программное обеспечение угадывает для пользователя.Они быстро поймут, пытаются ли они ввести немецкий номер телефона, и ваше программное обеспечение спросит их, пытаются ли они набрать Гуам!