千家信息网

JS之正则表达式懒惰性和贪婪性的示例分析

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要为大家展示了"JS之正则表达式懒惰性和贪婪性的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JS之正则表达式懒惰性和贪婪性的示例分析"
千家信息网最后更新 2025年11月06日JS之正则表达式懒惰性和贪婪性的示例分析

这篇文章主要为大家展示了"JS之正则表达式懒惰性和贪婪性的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JS之正则表达式懒惰性和贪婪性的示例分析"这篇文章吧。

exec - > 正则的捕获

每一次捕获的时候都是先进行默认的匹配,如果没有匹配成功的,捕获的结果是null;只有有匹配的内容我们才能捕获到;

捕获的内容格式

1、捕获到的内容是一个数组,数组中的第一项是当前正则捕获的内容

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

  input:捕获的原始字符串

var reg = /\d+/;var str = 'woshi2016ni2017';var res = reg.exec(str);console.log(res) // ['2016',index:5,input:'woshi2016ni2017']//第二次通过exec捕获的内容还是第一个"2016"var res = reg.exec(str);console.log(res) // ['2016',index:5,input:'woshi2016ni2017']

2、正则捕获的特点

  1)、懒惰性->每一次执行exec只捕获第一个匹配的内容,在不进行任何处理的情况下,在执行多次捕获,捕获的还是第一个匹配的内容。

  lastIndex:是正则每一次捕获在字符串中开始查找的位置,默认值为0

  2)、如何解决懒惰性?在正则的末尾加一个修饰符"g"

  修饰符:g、i、m

  global(g):全局匹配

  ignoreCase(i):忽略大小写匹配

  multiline(m):多行匹配  

var reg = /\d/g;var str = 'woshi2016ni2017';console.log(reg.lastIndex)console.log(reg.exec(str))

  原理:加了全局修饰符g,正则每一次捕获结束后,我们的lastIndex的值都变成了最新的值,下一次捕获从最新的位置开始查找,这样就可以把所有需要捕获的内容都获取到了

  3)、自己编写程序获取正则捕获的所有的内容(一定不要忘了加g)

var reg = /\d+/g;    var str = 'aswofde2015xsewde2016awdefer2017';    var ary = [];    var res = reg.exec(str);    while(res){      ary.push(res[0])      res = reg.exec(str);    }    console.log(ary)//[2015,2016,2017]

  4)、贪婪性 正则的每一次捕获都是按照匹配最长的结果捕获的,例如:2符合正则、2015也符合正则,我们默认捕获的是2015

  5)、如何解决正则的贪婪性 ->在量词元字符后面添加一个?即可 

var reg = /\d+?/g;    var str = 'aswofde2015xsewde2016awdefer2017';    console.log(reg.exec(str));

  ?在正则中有很多的作用:

  放在一个普通的元字符后面代表出现0-1次 /\d?/ ->数字可能出现也可能不出现

  放在一个量词的元字符后面是取消捕获时候的贪婪性

3、字符串中的match方法->把所有和正则匹配的字符都获取到  

var reg = /\d+?/g;    var str = 'aswofde2015xsewde2016awdefer2017';    var ary = str.match(reg);//[2,0,1,5,2,0,1,6,2,0,1,7]

虽然在当前的情况下match比我们的exec更加的简便一些,但是match中存在一些自己处理不了的问题,在分组的捕获的情况下,match只能捕获大正则匹配的内容,而对于小正则捕获的内容是无法获取的

以上是"JS之正则表达式懒惰性和贪婪性的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

正则 内容 贪婪 懒惰 字符 字符串 示例 表达式 分析 位置 元字符 情况 篇文章 全局 数组 时候 结果 还是 量词 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全与前端 学习通课程为什么连接服务器失败 完美正在连接服务器进不去怎么办 sql如何修改表所在数据库 检查工作的网络安全意识 dhcp服务器地址范围 access数据库实验 足球数据库扫盘软件 服务器属于税务哪一类 软件开发人员晋升和管理制度 飞龙樱花服务器有充电桩吗 腾讯网络安全技术负责人程虎 吉林专业软件开发过程标准 网络安全岗位考核细则 北京服务器机柜哪里买 湖南联想服务器维修调试费用 网络安全师和web渗透工程师 删除数据库表中某条数据 雷讯网络技术有限公司 网络安全信息官英文缩写 绵阳软件开发设计 潜渊症进入不了服务器怎么办 湖北浪潮服务器虚拟化部署 图标缓存数据库 网络安全和游戏有什么关联 权限管理模型数据库建模 山西服务器电源批发 地系统主题数据库 火影服务器满了就没有办法了吗 欧洲卡车模拟2自建服务器
0