iOS中正则表达式匹配用NSRegularExpression类。首先讲解下正则的匹配方式,再用NSRegularExpression去验证。
为什么使用正则
例如,NSStrig尽管提供了搜索和替换字符串的方法,若想找到一段文本的子串,要写循环,缺乏灵活性。通过使用正则,可以做到:
1、验证字符串的模式。例:验证电话号码、邮箱或ip等;
2、替换文本。例:识别文本中的特定字符,完全删除或用其他文本替换;
基于模式匹配提取子字符串。查找文档内特定的字符串;
匹配符号
非打印字符
\cx 匹配由x指明的控制字符。\cM匹配Control-M或回车符,x必须为a-z或A-Z,否则,c为原义de‘c’字符。
\f 匹配换页符。
\n 匹配换行符。
\r 匹配回车符。
\s 匹配任何空白字符,包括空格、制表符、换页符等。
\S 匹配任何非空白字符,等价于[^\f\n\r\t\v]。
\t 匹配制表符
\v 匹配垂直制表符
特殊符号
要匹配特殊字符本身,需在前加\。
$ 匹配输入字符串的结束位置
() 子表达式的开始和结束位置
* 0或多个字符
+ 一个或多个字符
. 匹配除换行符之外的任何字符
[ 中括号表达式的开始,. 特殊字符在中括号表达式时 如 [.] 只会匹配 .字符
? 0或1个字符
\ 下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符
^ 匹配输入字符串的开始位置,在方括号中使用,表示不接受该字符集合
{ 限制符表达式开始
| 两项之间的一个选择
限制符
表示正则的一个给定组件必须要出现多少次才满足匹配。
匹配前面子表达式0或多次
+ 匹配前面子表达式1或多次
?匹配前面子表达式0或1次
n是非负整数,匹配n次
n是非负整数,至少匹配n次
n和m均非负整数,其中n定位符
定位符指能固定到行首或行尾。
^ 匹配输入字符串开始的位置
$ 匹配输入字符串结尾的位置
\b 匹配一个字边界,即字与空格间的位置
\B 非字边界匹配
注意:不要将限制符与定位符一起使用。因在换行或字边界的前或后面不能有一个以上的位置,因此不允许有^*之类的表达式。
选择
用圆括号将所有选项括起来,相邻的选项间用|分割。但有副作用,使相关的匹配会被缓存,此时用?:放在第一个选项来消除。
?:、?=和?!使三个非捕获元,?=是正向检查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,?!为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。
其他
\w 匹配字母、数字、下划线。等价于[A-Za-z0-9]
\W 匹配非字母、数字、下划线。等价于[^A-Za-z0-9]
/i 不区分大小写
/g 表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串
/d 相当于[0-9]
上述是基本的匹配字符,后续用到会继续添加。下面介绍几个常用的匹配字符族:
最后演示个密码的等级评分:
领取专属 10元无门槛券
私享最新 技术干货