【一】正则
(1)网址
(2)字符组
- 字符组 :[] 在同一个位置可能出现的各种字符组成了一个字符组
- 在正则表达式中用[]表示
- [0123456789] # 匹配0-9中某个字符的单个结果
[0-9] # 匹配0-9中某个字符的单个结果
[a-z] # 匹配a-z中某个字符的单个结果
[A-Z] # 匹配A-Z中某个字符的单个结果
[0-9a-zA-Z] # 匹配数字或小写字母或大写字母的单个结果
(3)元字符
\w # 只能匹配字母或数字或下划线,也不能匹配换行符
\s # 只能匹配任意的空白符(其实就是空格)
\d # 只能匹配任意的数字
\n # 匹配换行符(其实就是回车键)
\t # 匹配制表符(其实就是tab键)
\b # 匹配一个单词的结尾
\W # 不能匹配字母或数字或下划线,也不能匹配换行符
\D # 不能匹配任意的数字
\S # 不能匹配任意的空白符(其实就是空格)
^ # 匹配字符串的开始的字符
$ # 匹配字符串的结尾的字符
| # 管道符,表示或 前面的字符或者后面的字符
() # 优先匹配括号内部的表达式
[] # 匹配到字符组内的字符
(4)量词
-
重复零次或多次
-
重复一次或多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
(5)重复匹配
?表示重复零次或一次,即只匹配一个任意字符
+表示重复一次或多次,即只匹配1个或多个任意字符
*表示重复零次或多次,即匹配0或多个任意字符
{}匹配输入的任意字符
(6)字符集
[]取字符组中的任意一个 若是[]*可以重复无数次
[^]表示匹配一个不是字符任意次
(7)分组匹配 (身份证)
^[1-9]\d{13,16}[0-9x]$ 330302199907036519 330302199907036519 可以匹配一个正确的身份证号
^[1-9]\d{13,16}[0-9x]$ 3303021999070365199 330302199907036519 也可以匹配这串数字
^[1-9]\d{14}(\d{2}[0-9x])?$ 3303021999070365199 不会匹配到错误的身份证号
`^([1-9]\d{16}[0-9x] [1-9]\d{14})$` 330302199907036519 330302199907036519
(8)贪婪匹配
-
贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配
-
?取消非贪婪模式
- 前提是你这个匹配条件支持贪婪模式
-
几个常用的非贪婪匹配,Pattern
-
*? 重复任意次,但尽可能少重复
-
+? 重复1次或更多次,但尽可能少重复
-
?? 重复0次或1次,但尽可能少重复
-
{n,m}? 重复n到m次,但尽可能少重复
-
{n,}? 重复n次以上,但尽可能少重复