我正在开发一个Swift项目,我需要使用这个正则表达式检查电子邮件是否有效,但是当应用程序开始检查应用程序崩溃并给我这个错误时:
NSInternalInconsistencyException',原因:'无法进行正则表达式匹配,原因:无法打开模式U_REGEX_MISSING_CLOSE_BRACKET
这是我的REGEX:
^(([^<>()[\\]\\.,;:\\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,}))$
答案 0 :(得分:1)
检查正则表达式中未转义的括号:
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,}))$"
// [ ] [ ] [ ] [ ] [ ] [ ] [ ]