Jac*_*ing 3 regex escaping nspredicate nsregularexpression swift
我正在尝试使用NSPredicate和正则表达式验证电话号码.唯一的问题是当设置正则表达式Swift认为我试图逃避它的一部分由于反斜杠.我怎么能绕过这个?
我的代码如下:
let phoneRegEx = "^((\(?0\d{4}\)?\s?\d{3}\s?\d{3})|(\(?0\d{3}\)?\s?\d{3}\s?\d{4})|(\(?0\d{2}\)?\s?\d{4}\s?\d{4}))(\s?\#(\d{4}|\d{3}))?$"
Run Code Online (Sandbox Code Playgroud)
在Swift中,您仍然需要双重转义字符串文字中的斜杠以定义文字反斜杠:
let phoneRegEx = "^((\\(?0\\d{4}\\)?\\s?\\d{3}\\s?\\d{3})|(\\(?0\\d{3}\\)?\\s?\\d{3}\\s?\\d{4})|(\\(?0\\d{2}\\)?\\s???\\d{4}\\s?\\d{4}))(\\s?\\#(\\d{4}|\\d{3}))?$"
Run Code Online (Sandbox Code Playgroud)
请参阅ICU正则表达式页面上的正则表达式元字符表,以查看应以这种方式转义正则表达式转义符.
请注意正则表达式转义(在上表中)和字符串文字转义序列之间的区别,您可以检查字符串文字中的特殊字符:
字符串文字可以包含以下特殊字符:
所以,"\""是"作为字符串写入文本字符串,而你没有逃脱正则表达式引擎双引号,这样"\""字符串字面正则表达式是足以匹配"字符串中的字符.但是,"\\\""字符串文字重复\"文字字符串也将匹配"char,尽管您已经可以看到这个正则表达式模式有多余.此外,"\n"(一个LF符号)以与换行符相同的方式匹配换行符"\\n",这"\n"是换行符char的文字表示,并且"\\n"是ICU正则表达式转义表中定义的正则表达式转义符.
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |