func isValidUAENumber() -> Bool {
let phoneRegExAr = "^(?:\\+٩٧١|٠(٠٩٧١)?)(?:[٢٣٤٦٧٩]|٥[٠١٢٥٦])[٠-٩]{٧}$"
let phoneRegEx = "^(?:\\+971|0(0971)?)(?:[234679]|5[01256])[0-9]{7}$"
let isArabic = true //(or false based on some condition)
let useRegEx = isArabic ? phoneRegExAr : phoneRegEx
let phonePredicate = NSPredicate(format:"SELF MATCHES %@", useRegEx)
return phonePredicate.evaluate(with: self)
}
Так что этот код отлично работает с номерами ОАЭ на английском языке, и сейчас я пытаюсь проверить то же самое с номерами ОАЭ на арабском языке.Мой разум предложил мне преобразовать английские числа RegEx в арабские числа RegEx, поэтому я использовал инструмент онлайн-перевода для преобразования английских цифр в арабские, и здесь у меня есть арабские числа RegEx, но приложение получит сбой, так как я использовал арабское регулярное выражение для проверкидействительный номер ОАЭ на арабском языке:
*** Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «Невозможно выполнить сопоставление с регулярным выражением, причина: невозможно открыть шаблон U_REGEX_BAD_INTERVAL (строка +٩٧١٥٢٥٣٩٥٧٥٧»), шаблон ^ (?: + ٩٧١ | ٠ (٠٩٧١)?) (?: [٢٣٤٦٧٩] | ٥ [٠١٢٥٦]) [٠-٩] {٧} $, случай 0, канон 0) '
Кто-нибудь сталкивался с такой ситуацией раньше?Пожалуйста, помогите.
Обновление 1 :
Так выглядит арабский RegEx в Xcode?
Номера образцов:
- 072466666 (٠٧٢٤٦٦٦٦٦)
- + 97172466666 (+٩٧١٧٢٤٦٦٦٦٦)
Вы можете преобразовать их в арабские числа для проверки?
Обновление 2:
После использования RegEx ("^(?:\\+٩٧١|٠(٠٩٧١)?)(?:[٢٣٤٦٧٩]|٥[٠١٢٥٦])[٠-٩]{7}$"
), предоставленного rmaddy, он прекратил сбойно все же он не определяет, является ли это действительный номер или нет.