正则表达式,有称为规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE),是一种用来进行文本匹配的工具:用事先定义好的一些特殊字符及这些特殊字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式由一些普通字符和一些元字符(metacharacters)组成,在iOS中,多数用于检查字符串是否符合规则。
常用的符号及意义
匹配除换行符(“\r\n”)之外的任意单个字符
eg: “a.[a-z]”: 表示一个字符串有一个“a”后面跟着一个任意字符和一个小写字
母。
\w 匹配包括下划线的任何单词字符,等价于“[A-Za-z0-9_]”
\W 匹配任何非单词字符,等价于“[~A-Za-z0-9_]”
\s 匹配任意的空白符(空格、制表符、换行符)
eg: [\\s]{6,24} or \\s{6,24}
\S 匹配任意非白符的字符
eg: [\\S]{6,24} or \\S{6,24}表示 6 到 24 位不为空格的字符
\d 匹配一个数字字符,等价于 [0-9]
\D 匹配一个非数字字符,等价于 [^0-9]
\b 匹配单词的结尾或者开头的字符
\B 匹配任意不是单词结尾或开头的字符
^ 匹配字符串的开头
$ 匹配字符串的结尾
2.2修饰表达符号(该符号用来修饰值达成某种条件)
匹配重复任意次数,表示没有或更多([0, +∞] 取整),等价于{0,}
eg: ab* 表示一个字符串有一个a后面跟着两个或诺干个b(ab, abb, abb, …)
(ab)* 表示(ab, abab, ababab, …)
匹配重复一次以上的次数([1, +∞] 取整),等价于 {1,}
eg: ab* 表示一个字符串有一个a后面跟着至少一个b或者更多(ab, abb, abbb,…)
? 匹配一次或零次([0, 1]),等价于 {0, 1}
eg: ab? 表示一个字符串有一个 a 后面跟着零个或者一个 b(a, ab);
{n} 匹配重复 n 次,表示一个重复的具体范围
eg: ab{4} : 表示一个字符串有一个 a 跟着 4 个b (abbbb);
ab{1,}: 表示一个字符串有一个a 跟着至少一个 1 个 b (ab, abb, abbb, …)
ab{3,4}: 表示一个字符串有一个a 跟着3到4个b (abbb, abbbb)
() 限定一个子串
[] 表示的值必须是括号中间集合的子集,括号里面可以有多个集合,如[A-Z0-9a-z]
表示匹配任意一个大小写或数字
[^] ^ 在 [] 里边代表非的意思,如 [1] 匹配非小写字母的任意字符
| 表示或操作
?= 用圆括号包括,表示检查符合括号内规则的字符,如:(?=[0-9]{0-7}) 表示前 7 位
全为数字
?! 用圆括号包括,表示检查不符合括号内规则的字符, 如: (?![0-9]{0-7}) 表示前
7 位不全为数字
注:上述所列的内容仅为正则表达式一些常用的符号,对于一般的使用已可满足。
3.1 在 iOS中书写正则表达式,碰到转义字符,多加一个“\”.
eg: @“\\d+$” (纯数字字符) \ 为转义字符
3.2当正则表达式和字符串函数都能解决问题时,一定要使用字符串函数,这样不容易
出错,最重要的是字符串函数比正则表达式实现性能上要好得多。
一般使用谓词NSPredicate来进行使用
当需要筛选的内容(limitContent)符合筛选条件(limitContent)时,limit的值为YES,反之为NO
除了使用谓词,还可以使用NSString方法以及正则表达式类(NSRegularExpression)
备注:本文整理与2016年11月(Q),现将本地文档网络化。
a-z ↩︎