正则表达式(Regular Expression):专门描述字符串中字符出现规则的表达式。
用于:验证字符串格式;查找敏感字字符集。
字符集:
1、是规定一位字符上多种备选字的列表;
2、只要规则中某一位字符上有多种备选字时,就用字符集;
- 要匹配一位小写字母:[a-z] 共26个
- 要匹配一位大写字母:[A-Z] 共26个
- 要匹配一位字母:[A-Za-z] 共52个
- 要匹配一位数字:[0-9]共10个
- 要匹配一位数字或字母:[0-9A-Za-z]共62个
- 要匹配一位汉字:[\u4e00-\u9fa5]
- 例:利用字符集简写定义车牌号规则:
第一位:1位汉字
第二位:1位大写字母
第三位:·
后五位:每一位都是都是一位大写字母或数字
答案:[\u4e00-\u9fa5][A-Z]·[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]
预定义字符集:
正则表达式语法位四种最常用的字符集定义了最简化写法,称为预定义字符集;
包括:
- 要匹配一位数字:\d 等效于[0-9]
- 要匹配一位字母、数字或_:\w等效于[0-9A-Za-z_]
- 要匹配一位空字符:\s可匹配空格、制表符Tab等空白
- 要匹配所有文字(通配符):.
数量词:
1、是专门规定一个字符集出现次数的规则
2、只要一个字符集在规则中可能连续反复出现多次,就要用数量词以简写的方式定义出现次数
3、数量词紧跟在其修饰的字符集之后,默认修饰相邻的前一个字符集
4、包括两大类:
(1)有明确数量边界的数量词:
字符集{n} 表示字符集必须重复多少次,不能多也不能少;
字符集{n,m} 表示字符集至少重复n次,最多重复m次;
字符集{n,} 表示字符集匹配的内容至少重复n次,多了不限
例:\d{4,6}表示4到6位数字;
例:\d{4,}表示4位及以上数字
(2)没有明确数量边界的数量词:
* 可有可无,多了不限;
?可有可无,最多一次;
+ 至少一次,多了不限;
例:定义车牌号进一步简写:[\u4e00-\u9fa5][A-Z]·[0-9A-Z]{5}

例:定义手机号规则:1[3-9]\d{9}

选择和分组:
选择,指在多个子规则中选其一匹配,只要希望在多个子规则中选其一匹配时,就用选择;
如何:子规则1 | 子规则2;
读作:满足规则1 或 规则2;
“|” 选择符只分左右,不考虑单个字符;
分组,将多个子规则视为一组,再和分组外的规则匹配,只要希望将多个子规则视为一个整体, 再和其它规则匹配,就用分组。
如何:其它规则 (多个子规则)
例:定义完整身份证规则:
15位数字:\d{15};
2位数字:\d\d;
最后一位:1位数字或x:[0-9x];
最后三位可有可无,最多一次:(\d\d[0-9x])?;
答:\d{15}(\d\d[0-9x])?

指定匹配位置:
如果只希望匹配特殊位置上的关键字时,就可以用特殊字符号表示特殊位置;
包括:
^ 表示字符串开头
$ 表示字符串结尾
\b 表示单词边界,可匹配:空格,标点符号,字符串开头和结尾等可将一个单词与其它单词分割开的符号
例:找到每个单词的首字母
——前面紧挨着单词边界的字母
答:\b[A-Za-z]
精简正则表达式:字符集、数量词与实战应用
9222

被折叠的 条评论
为什么被折叠?



