正则

213 阅读1分钟

什么是正则?

正则就是一个规则,用来处理‘字符串’的规则,

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]))$/