Как бы вы сопоставили два похожих телефонных номера в Swift, но один содержит код страны, а другой-нет


Я пытаюсь сопоставить два похожих телефонных номера в swift, но одному из них предшествует код страны, а другой может отличаться. Например, я хочу, чтобы эти 2 номера телефонов совпадали:

0499999999

+32499999999

Я хочу, чтобы это было действительно для любого телефонного номера во всем мире. Есть ли регулярное выражение для этого или, может быть, стручок, который я мог бы загрузить для этого?

Спасибо

2 2

2 ответа:

Используйте PhoneNumberKit Для Разбора Номера Телефона.

Https://github.com/marmelroy/PhoneNumberKit

Как:

let rawNumberArray = ["0291 12345678", "+49 291 12345678", "04134 1234", "09123 12345"]
let phoneNumbers = phoneNumberKit.parse(rawNumberArray)
let phoneNumbersCustomDefaultRegion = phoneNumberKit.parse(rawNumberArray, withRegion: "DE",  ignoreType: true)

Вы можете сделать таблицу поиска стран и кодов стран и проверить по телефону, какой у них язык

let countrycode = NSLocale.currentLocale().objectForKey(NSLocaleCountryCode) as? String

let countryPrefixes = ["IE": "+353", 
                       "US": "+1",
                        etc...

let prefix = countryPrefixes[countrycode]

Как только у вас появится префикс, вы сможете посмотреть только на оставшиеся числа.

Или вы можете использовать эту библиотеку github https://github.com/rmaddy/RMPhoneFormat который, кажется, уже сделал эту работу для вас.

Конечно, это предполагает, что вы ожидаете, что номер телефона, введенный в ваше устройство, будет действителен в данном регионе. что телефон работает внутри.