ios - 如何使用 RegEx 测试阿拉伯语中的阿联酋号码?
问题描述
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(字符串 +٩٧١٥٢٥٣٩٥٧٥٧,模式 ^(?:+٩٧١|٠(٠٩٧١)?) (?:[٢٣٤٦٧٩]|٥[٠١٢٥٦])[٠-٩]{٧}$, case 0, canon 0)'
以前有人遇到过这种情况吗?请帮忙。
更新 1:
样品编号:
- 072466666 (٠٧٢٤٦٦٦٦٦)
- +97172466666 (+٩٧١٧٢٤٦٦٦٦٦)
您可以将它们转换为阿拉伯数字进行测试吗?
更新 2:
使用 rmaddy 提供的 RegEx ( "^(?:\\+٩٧١|٠(٠٩٧١)?)(?:[٢٣٤٦٧٩]|٥[٠١٢٥٦])[٠-٩]{7}$"
) 后,它停止了崩溃,但仍然无法检测它是否是有效数字。
解决方案
推荐阅读
- blockchain - 是否有可能在 Solana 中“未公开”铸造 NFT,然后稍后再公开?
- javascript - 我正在尝试让我的机器人使用公会的名称创建一个新频道,如果它还没有创建的话
- html - 一些线的边界比其他线厚
- android - Android:单选按钮文本与数字没有很好地对齐
- python-sphinx - 如何做狮身人面像树和子树结构,如 md 文件中的链接
- minizinc - 有没有办法在 minizinc 中自定义 int_search?
- mysql - 使用 MySQL 的 TypeORM 中的基本 leftJoinAndSelect
- c++ - 使用书中给出的 square() 函数时出现未声明的标识符错误
- django - 如何使用 folium 显示来自数据库的图像
- python - AttributeError:“列表”对象没有属性“add_student”