加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则理解

发布时间:2020-12-14 06:11:50 所属栏目:百科 来源:网络整理
导读:正则的理解 正则的懒惰性 每一次在exec()中捕获的时候,只捕获第一次匹配的内容,而不往下捕获了。我们把这叫正则的懒惰性,每一次捕获的开始位置都是从0开始 ?var reg=/d+/; ?var st="he45612llo12345" cosole.log(reg.exec(st))----结果:45612 解决正则

正则的理解

  1. 正则的懒惰性

每一次在exec()中捕获的时候,只捕获第一次匹配的内容,而不往下捕获了。我们把这叫正则的懒惰性,每一次捕获的开始位置都是从0开始

?var reg=/d+/;

?var st="he45612llo12345"

cosole.log(reg.exec(st))----结果:45612

解决正则的懒惰性呢

修饰符g

正则的实例对象reg上有一个lastIndex属性 他是正则捕获的起始位置

?var reg=/d+/g;

?var st="he45612llo12345"

cosole.log(reg.exec(st))----结果:45612

cosole.log(reg.exec(st))----结果:12345

cosole.log(reg.exec(st))----结果:null

  1. 正则的贪婪性

每一次匹配都是按照最长的出结果,我们把这种功能叫正则的贪婪性

?

?var reg=/d+/;

?var st="hello12345"

cosole.log(reg.exec(st))----结果:12345

如何解决正则的贪婪性

在元字符量词后面加?

?var reg=/d+?/g;

?var st="he45612llo12345"

cosole.log(reg.exec(st))----结果:4,5,6,1,2,3,4,5

补充 循环语句? for?? for? in? while?? do---while---

?var i=12;

var num=null;

while(i<11){

  sum=sum+i;

  i++;

}

console.log(sum)//先判断后执行

结果:null;

?var i=12;

var num=null;

do{

  sum=sum+i;

  i++;

}

while(i<11)

console.log(sum)//先判断后执行

结果:12

二 分组捕获 正则带()? 在数分组的个数时从左往右

var reg=/(a)(b)/ 就相当于大正则里面带了两个小正则

第一组是(a) 第二组是(b)

分组捕获的作用

  1. 改变优先级
  2. 分组引用? 1,2

2代表和第二个分组出现一模一样的内容,1代表和第一个分组出现一模一样的内容

?var reg/(w)1(w)2/

var st="ssdd"

var s=reg.test(st)

console.log(s)

Reg中的规则是第一个是一个分组 且是一个单词字符 第二个是个分组引用要求和第一组一模一样,第三个是第二个分组且是一个单词字符,第四个是一个分组引用,要求和第二组一模一样。

3.分组捕获

分组的捕获前提是正则存在分组,不仅把大正则的内容捕获到,把小正则的内容也捕获到。

?var reg=/(a)(b)/

/ab/ /a/ /b/

var st="absd"

console.log(reg.exec(st))//ab,a,b

怎样解除分组中分组捕获呢,如果你不想捕获某一个分组中的内容,在这个分组的前面加上?:就可以了

?var reg=/(a)(?:b)/

/ab/ /a/ /b/

var st="absd"

console.log(reg.exec(st))//ab,a

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读