什么是正则?
正则就是一个规则,用来处理‘字符串’的规则,
1.正则匹配
编写一个规则,验证某个字符串是否符合这个规则,正则匹配使用的是test方法
2.正则捕获
编写一个规则,在一个字符串中把符合规则的内容都获取到,正则捕获使用的方法:正则的exec方法 、字符串中的split、replace、match等方法都支持正则
var reg = /^$/; //=>两个斜杠中间包含一些内容就是正则,两个斜杠之间包含的全部内容都是元字符
任何一个正则都是由元字符和修饰符组成的
‘修饰符’
g(global):全局匹配
i(ignoreCase):忽略大小写匹配
m(multiline):多行匹配
'元字符'
[量词元字符]
+ :让前面的元字符出现一到多次
?:出现零到一次
*:出现零到多次
{n}:出现n次
{n,}出现n到多次
{n,m}出现n到m次
[特殊意义的元字符]
\:转义字符(把一个普通字符转变为有特殊意义的字符,或者把一个有意义字符转换为普通的字符 )
. :除了\n(换行符)以外的任意字符
\d:匹配一个0-9之间的数字
\D:匹配任意一个非0-9之间的数字(大写字母和小写字母的组合正好是反向的 )
\w:匹配一个0-9或者字母或者_之间的字符
\s:匹配一个任意空白字符
\b:匹配一个 边界符
x|y:匹配x或者y中的一个
[a-z]:匹配a-z中的任意一个字符
[^a-z]:和上面相反,匹配任意一个非a-z的字符
[xyz]:匹配x或者y或者z中的一个字符
[^xyz]:匹配 除了xyz以外的任意字符
():正则的小分组,匹配一个小分组(小分组可以理解为大正则中的一个小正则)
^:以某一个元字符开始
$:以某一个元字符结束
?::只匹配不捕获
?=:正向预查
?!:负向预查
除了上面的特殊元字符和量词元字符,其余的都叫做普通元字符:代表本身意义的元字符
e.g.
reg = /^\d+$/; =>只能是某某某的,这里说明只能是1到多个数字
正则里面的两个//就是//
():正则中的分组,也可以理解为一个大正则中的一个正则(包起来的部分是一个整体);在正则中我们可以使用小括号:‘改变一些默认的优先级’;
小分组还有第二个作用:‘分组引用’;
小分组的第三个作用:‘分组捕获’
分组引用:\1或者\2 ...出现和第N个分组一模一样的内容
var reg = /^([a-z])([a-z])\2([a-z])$/; =>符合的字符串:foot,book,week,attr,http
[ ]: \w数组字母下划线中的任意一个字符
var reg = /^[a-zA-Z0-9_]$/ 等价于\w
//=>中括号出现的元字符,一般都代表本身的含义
需求:验证18-65之间的年龄
var reg = /^[18-65]$/; //=>1或者8~6或者5中的任意一个字符,中括号中出现的18不是数字18,而是1或者8,当前正则是非法的,因为不能设置8~6这种范围
分三个阶段处理
//18或19
//20~59
//60~65
var reg = /^((18|19)|([2-5]\d)|(6[0-5]))$/