正则理解
正则的理解
每一次在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
每一次匹配都是按照最长的出结果,我们把这种功能叫正则的贪婪性 ? ?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) 分组捕获的作用
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |