全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js正则表达式惰性匹配和贪婪匹配用法分析

本文实例讲述了js正则表达式惰性匹配和贪婪匹配用法。分享给大家供大家参考,具体如下:

在讲贪婪模式和惰性模式之前,先回顾一下JS正则基础:

写法基础:

①不需要双引号,直接用//包含 => /wehfwue123123/.test();

②反斜杠\表示转义 =>/\.jpg$/

③用法基础:.test(str);

语法:

①锚点类

/^a/=>以"a"开头

/\.jpg$/=>以".jpg"结尾

②字符类

[abc]:a或b或c

[0-9]:一个数字

[a-z]:一个字母

.    :任意字符

③元字符

^:在[]里面用表示非,在[]外面用表示开头

\d:[0-9]

\s:空白符

\w:[A-Za-z0-9_]

\D:[^\d]-非数字

\S:非空白符

④量词

{m,n}:m到n次

元字符表示:

*:{0,}

?:{0,1}

+:{1,}

难点:贪婪模式/惰性模式

贪婪模式——在匹配成功的前提下,尽可能多的去匹配

惰性模式——在匹配成功的前提下,尽可能少的去匹配

解释一:码文并茂

使用正则表达式中的贪婪、惰性的量词可以控制表达式匹配过程,我们知道量词?、*、+的意义,可以指定相关模式出现的次数,默认的情况下我们使用的是贪婪量词,它的匹配过程是从整个字符串开始查看,如果不匹配就去掉最后一个,再看看是否匹配,如此循环一直到匹配或字符串空为止,如:

vars ="abbbaabbbaaabbb1234";
varre1=/.*bbb/g;//*是贪婪量词
re1.test(s);

这个匹配过程将从整个字符串开始:

re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续
re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续
re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续
re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续
re1.test("abbbaabbbaaabbb");//true ,结束

在贪婪量词的后面加多一个?就变成了惰性量词,它的匹配过程相反,是从前面第一个开始,不匹配则加一个,如此循环直到字符串结束,以上面的为例子。

vars ="abbbaabbbaaabbb1234";
varre1=/.*?bbb/g;//*?是惰性量词
re1.test(s);

它的匹配过程如下:

re1.test("a");//false, 再加一个
re1.test("ab");//false, 再加一个
re1.test("abb");//false, 再加一个
re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始
re1.test("a");//false, 再加一个
re1.test("aa");//false, 再加一个
re1.test("aab");//false, 再加一个
re1.test("aabb");//false, 再加一个
re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始

小结:

默认的贪婪匹配是从后往前匹配,最大长度的匹配,惰性匹配就是在量词后面加个?从字符串的前面开始匹配,最小长度的匹配

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools./regex/javascript

正则表达式在线生成工具:
http://tools./regex/create_reg

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript替换操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# js  # 正则表达式  # 惰性匹配  # 贪婪匹配  # JavaScript惰性求值的一种实现方法示例  # JS设计模式之惰性模式(二)  # JavaScript学习笔记之惰性函数示例详解  # JS 学习总结之正则表达式的懒惰性和贪婪性  # JS优化与惰性载入函数实例分析  # JavaScript AJAX之惰性载入函数  # 利用函数的惰性载入提高javascript代码执行效率  # JavaScript 函数惰性载入的实现及其优点介绍  # 如何用JavaScript实现一个数组惰性求值库  # 再加  # 是从  # 加多  # 的是  # 不匹配  # 配了  # 操作技巧  # 前提下  # 相关内容  # 第一个  # 不需要  # 遍历  # 感兴趣  # 数据结构  # 给大家  # 更多关于  # 所述  # 再看看  # 程序设计 


相关文章: 早安海报制作网站推荐大全,企业早安海报怎么每天更换?  购物网站制作公司有哪些,哪个购物网站比较好?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何选择适合PHP云建站的开源框架?  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在阿里云虚拟服务器快速搭建网站?  C#怎么使用委托和事件 C# delegate与event编程方法  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何选择美橙互联多站合一建站方案?  临沂网站制作公司有哪些,临沂第四中学官网?  ,石家庄四十八中学官网?  再谈Python中的字符串与字符编码(推荐)  ,怎么在广州志愿者网站注册?  如何在香港免费服务器上快速搭建网站?  建站之星云端配置指南:模板选择与SEO优化一键生成  如何配置IIS站点权限与局域网访问?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何做静态网页,sublimetext3.0制作静态网页?  如何通过可视化优化提升建站效果?  如何在万网自助建站中设置域名及备案?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  建站之星导航如何优化提升用户体验?  如何获取PHP WAP自助建站系统源码?  济南专业网站制作公司,济南信息工程学校怎么样?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何选择高效可靠的多用户建站源码资源?  高防服务器租用指南:配置选择与快速部署攻略  定制建站是什么?如何实现个性化需求?  如何快速查询网址的建站时间与历史轨迹?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何在阿里云完成域名注册与建站?  如何在新浪SAE免费搭建个人博客?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  网站制作网站,深圳做网站哪家比较好?  网站制作员失业,怎样查看自己网站的注册者?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  网站代码制作软件有哪些,如何生成自己网站的代码?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  制作企业网站建设方案,怎样建设一个公司网站?  如何构建满足综合性能需求的优质建站方案?  英语简历制作免费网站推荐,如何将简历翻译成英文?  定制建站方案优化指南:企业官网开发与建站费用解析  网站按钮制作软件,如何实现网页中按钮的自动点击? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。