我正在做一个 Swift 项目,我需要使用这个正则表达式来检查电子邮件是否有效,但是当应用程序开始检查时应用程序崩溃并给我这个错误:
NSInternalInconsistencyException', reason: 'Can't do regex matching, reason: Can't open pattern U_REGEX_MISSING_CLOSE_BRACKET
这是我的正则表达式:
^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+[\\.]*)+[a-zA-Z]{2,}))$
最佳答案
检查正则表达式模式中未转义的括号:
let pattern
= "^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))"
// [ [ ] [ [ ]
+ "@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+[\\.]*)+[a-zA-Z]{2,}))$"
// [ ] [ ] [ ] [ ] [ ] [ ] [ ]
您的模式的前半部分有一些不匹配的括号 [ ]
。
在正则表达式的一些方言中,你不需要在 [
和 ]
之间转义 [
,但在其他一些方言中,你需要
尝试向您的正则表达式添加一些转义符:
let pattern
= "^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))"
// [ ^^ ] [ ^^ ]
+ "@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+[\\.]*)+[a-zA-Z]{2,}))$"
// [ ] [ ] [ ] [ ] [ ] [ ] [ ]
关于regex - 无法在 Swift 中进行正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39346474/