JavaScript正则表达式的贪婪匹配和非贪婪匹配


Posted in Javascript onSeptember 05, 2017

所谓贪婪匹配就是匹配重复字符是尽可能多的匹配,比如:

"aaaaa".match(/a+/); 
//["aaaaa", index: 0, input: "aaaaa"]

非贪婪匹配就是尽可能少的匹配,用法就是在量词后面加上一个“?”,比如:

"aaaaa".match(/a+?/); 
//["a", index: 0, input: "aaaaa"]

但是非贪婪匹配有时候和我们期待的并不一样,比如:

"aaab".match(/a+b/); 
["aaab", index: 0, input: "aaab"] 
"aaab".match(/a+?b/); 
["aaab", index: 0, input: "aaab"]

在我们期待的情况下非贪婪匹配应该是匹配"ab"才对但是结果却和贪婪匹配时一样的。
在《权威指南》中有这么一句话:正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。
个人对这句话的理解是:上例中正则表达式会先找到第一个字符a,因为a后面连接的字符有可能形成匹配,这是正则表达式就认定这个位置的字符了,然后开始往后进行匹配,如果像第一个例子中那样非贪婪匹配,匹配到第一个a就结束了,但是第二个例子中还要匹配b所以不得不接着往下匹配直到匹配到b为止结束。

总结

以上所述是小编给大家介绍的JavaScript正则表达式的贪婪匹配和非贪婪匹配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery遍历input取得input的name
Apr 27 Javascript
JavaScript中window.showModalDialog()用法详解
Dec 18 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
C#中使用迭代器处理等待任务
Jul 13 Javascript
详解JS面向对象编程
Jan 24 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
JavaScript设计模式之代理模式详解
Jun 09 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
Nov 08 jQuery
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
vue 表单之通过v-model绑定单选按钮radio
May 13 Javascript
vue实现按需加载组件及异步组件功能
May 27 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 #Javascript
Angular实现下载安装包的功能代码分享
Sep 05 #Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 #Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 #Javascript
zTree异步加载展开第一级节点的实现方法
Sep 05 #Javascript
纯js实现画一棵树的示例
Sep 05 #Javascript
javascript基础进阶_深入剖析执行环境及作用域链
Sep 05 #Javascript
You might like
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
javascript 短路法代码精简
2009/08/20 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
为JavaScript添加重载函数的辅助方法
2010/07/04 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
2017/08/10 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
vue实现在进行增删改操作后刷新页面
2020/08/05 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python2与python3共存问题的解决方法
2018/09/18 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
Python批量启动多线程代码实例
2020/02/18 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
大学生求职自荐信
2013/12/12 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
财务整改报告范文
2014/11/05 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python