正则表达式(Regular Expression):专门描述字符串中字符出现规则的表达式。
1、字符集
①简写:如果[]中部分备选字符连续,可用-省略中间字符
比如,手机号规则中:
[3456789] 可简写为 [3-9] 读作 3到9
[0123456789] 可简写为 [0-9] 读作 0到9
②其它简写:
要匹配一位小写字母:[a-z] 共26个
要匹配一位大写字母:[A-Z] 共26个
要匹配一位字母: [A-Za-z] 共52个
要匹配一位字母或数字:[0-9A-Za-z] 共62个
要匹配一位汉字:[\u4e00-\u9fa5]
19968 ~ 40869 共20902个
2、预定义字符集
正则表达式语法为四种最常用的字符集定义了最简化写法,称为预定义字符集。
包括:
要匹配一位数字: \d 等效于 [0-9]
要匹配一位字母、数字或_: \w 等效于 [0-9A-Za-z_]
要匹配一位空字符:\s 可匹配 空格、制表符Tab等空白
要匹配所有文字(通配符): .
3、数量词
一个字符集(\d或[0-9])只能匹配一位字符,要匹配9位字符,就必须重复写9遍
程序用规则匹配字符串,就像彩票兑奖一样,是逐字逐个规则匹配。不但内容要符合规则,位数首先要一致
今后,只要一个字符集在规则中可能连续反复出现多次,就要用数量词以简写方式定义出现次数。
①有明确数量边界的数量词
字符集{n} 表示字符集必须重复n次,不能多也不能少
字符集{n,m} 表示字符集至少重复n次,最多重复m次,
比如: \d{4,6} 表示4到6位数字
字符集{n,} 表示字符集匹配的内容至少重复n次,多了不限,比如:\d{6,} 表示6位以上数字
②没有明确数量边界的数量词
* 可有可无,多了不限
? 可有可无,最多一次
+ 至少一次,多了不限
4、选择和分组
①选择
如何: 子规则1 | 子规则2
读作: 满足规则1 或 满足规则2
②分组
分组,将多个子规则视为一组,再和分组外的规则匹配
只要希望将多个子规则视为一个整体,再和其它规则匹配时,就用分组
如何: 其它规则 (多个子规则)
5、指定匹配的位置
- ^ 表示字符串开头
- $ 表示字符串结尾
- \b 表示单词边界,可匹配:空格,标点符号,字符串开头和结尾等可将一个单词与其它单词分割开的符号。