正则总结

一、创建正则的两种方式

1. 字面量方式

var reg = /\d+/

字面量方式//之间包起来的都是元字符,有的是具有特殊意义的元字符,大部分是代表本身含义的普通元字符

2. 实例创建

var reg = new RegExp("\\d+")

两种方式的区别

(1)字面量方式中出现的都是元字符,不能进行变量的拼接,而实例创建的方式可以

eg: var reg = new RegExp("\\d+"+name) //name是一个变量

(2)字面量方式中可以直接写\d,但是在实例创建中需要转义\d,所以应该写\\d,否则则是匹配真实的"\d"字符串

二、正则中常见的元字符

1. 具有特殊意义的元字符

\:转义字符

^:以XXX开头

$:以XXX结尾

\n:换行

.:除了\n以外的所有字符

():分组

分组的作用:

(1)改变优先级,就像我们算数中的一样,通过括号改变优先级

eg: var reg = /^18|19$/ (代表以1开头,9结尾都可以满足)

      var reg = /^(18|19)$/代表18或者19

(2)分组捕获,这点可以看下面的正则分组

x|y:x或者y中的一个

[xyz]:x,y,z中的一个(xyz只识别一位的)

[^zyz]:不是x,y,z中的一个

\d:一个0-9之间的数字

\D:除了0-9的数字的任意字符

\b:一个边界符

\w:数字字母下划线[a-zA-Z0-9_]

\s:匹配一个空白字符,包括一个空格、制表符、换页符等

2.代表量词的元字符

*:0到多次

?:0或者1次(放在表示量词的元字符后面是解决贪婪性的)

+:1到多次

{n}:n次

{n,}:n到多次

{n,m}:n到m次

三、正则的匹配

test

判断一个字符串是否符合我们指定的规则

四、正则的捕获

exec

1.捕获的格式

捕获到的是一个数组,如下

数组第一项:大正则捕获到的内容

index:捕获内容在字符串中开始的索引位置

input:原始字符串

2.捕获的特点

(1)懒惰性

只捕获第一个匹配内容,在不做任何处理的情况下在执行多次捕获时永远从第一个字符开始,捕获到的永远是第一个匹配的内容

lastIndex:每一次捕获时在字符串中查找的开始位置,默认是0,多次执行exec,还是从第一个字符开始匹配

解决懒惰性:

修饰符:

g:全局

i:不区分大小写

m:多行匹配

解决办法:

正则加全局修饰符g,正则每一次捕获结束后,lastIndex都会变成最新的

从上图可以看出lastIndex每次都从新的位置开始匹配,当匹配不到时就是null,所以要想得到全部的匹配项我们可以这样做

(2)贪婪性

每次捕获都是按匹配的最长字符捕获的,例如2符合2015也符合则捕获2015

如何解决贪婪性?在量词后面加?

eg:var reg = /\d+?/

match

match可以解决exec需要通过循环才能获取到全部匹配项的问题

match虽然简单,但是match只能捕获大正则要捕获的内容,不能捕获分组后小正则要捕获的内容

五、正则分组捕获

1.正则分组作用

(1)改变优先级

(2)分组捕获

\1和第一个分组一模一样的内容,\2表示和第二个分组一模一样的内容

eg:var reg = /(\w+)\1(\w+)\2/;
     reg.test('afaf') //->false;    reg.test('aaff') //->true

2.分组捕获获取到的数组

数组中:

第一项:大正则捕获到的数据

第二项:第一个分组捕获到的数据

第二项:第二个分组捕获到的数据

...

(?:)在分组中的意思是只匹配不捕获

六、replace

作用:字符串的替换,在不使用正则的情况下,每一次只能替换一个,而且每次替换时和exec一样,都是从第一个字符串开始替换

replace方法的第二个参数也可以是一个函数

(1)匿名函数执行多少次取决于正则捕获多少次

(2)匿名函数的参数值类似与exec捕获到的数组,可以通过arguments获取到分组捕获的内容

(3)return就是要替换成的内容

这些大概就是正则的所有应用了,整理下来方便之后查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值