数量词
数量词,是专门规定一个字符集出现次数的规则;
- 今后,只要一个字符集在规则中可能连续反复出现多次,就要用数量词以简写方式定义出现次数。
- 如何:数量词紧跟在其修饰的字符集之后,默认修饰相 邻的前一个字符集
- 比如:手机号中连续的9个数字\d,可进一步简写为:
1[3-8]\d{9}
\d{9} = \d*9
所以我们可以得出一个结论,字符集只管内容,而数量词只管数量。
问题:短信验证码的数字可能是4位或6位,不确定位数
数量词包括两大类:
- 有明确数量边界的数量词;
字符集{n}:表示字符集必须重复n次,不能多也不能少;
字符集{n,m}: 表示字符集至少重复n次,最多重复m次,比如: \d{4,6} 表示4到6位数字;
字符集{n,}:表示字符集匹配的内容至少重复n次,多了不 限,比如:\d{6,} 表示6位以上数字;
2.正则为我们简化了一些常用没有明确数量边界的数量词;
* : 可有可无,多了不限,相当于{0,};
? : 可有可无,最多一次, 相当于{0,1};
+ : 至少一次,多了不限, 相当于{1,};
练习:
- 匹配手机短信中的验证码:连续的4~6位数字
答案: \d{4,6} - 匹配字符串中的一组连续空字符
答案: \s+
问题:屏蔽敏感词时,屌丝把字换成拼音就查不出来了 。
错误的做法: 字符集只认识单个字,不认识cao是整体。
image.png
我解决这个问题,正则表达式又引入选择和分组的概念。