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, он перестал падать, но по-прежнему не определяет, является ли это допустимым числом или нет.
{7}
должен оставаться{7}
в арабском выражении, и он должен оставаться после эквивалента[0-9]
. - person rmaddy   schedule 20.09.2018let phoneRegExAr = "^(?:\\+٩٧١|٠(٠٩٧١)?)(?:[٢٣٤٦٧٩]|٥[٠١٢٥٦])[٠-٩]{7}$"
, но, поскольку вы не предоставили никаких тестовых примеров в своем вопросе, я не могу его проверить. (Это не так, как это выглядит в Xcode). - person rmaddy   schedule 20.09.2018\uXXXX
. - person Wiktor Stribiżew   schedule 22.11.2018