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,但应用程序会崩溃,因为我使用阿拉伯语RegEx检查阿拉伯语中的有效阿联酋数字:
***由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法进行正则表达式匹配,
原因:无法打开模式U\U REGEX\U BAD\U INTERVAL(字符串+§,
图案^(?)?:+§|(§)?)(?:[·§]|[])[-]{§}$,第0种情况,
“佳能0”
以前有人遇到过这种情况吗?请帮忙。
更新1
:
样品编号:
-
072466666 (§¤)
-
更新2:
使用正则表达式之后(
"^(?:\\+٩٧١|٠(٠٩٧١)?)(?:[٢٣٤٦٧٩]|٥[٠١٢٥٦])[٠-٩]{7}$"
)这是由rmaddy提供的,它已停止崩溃,但仍然无法检测它是否是有效数字。