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 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
关于图片验证码设计的思考
Jan 29 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
js中的数组Array定义与sort方法使用示例
Aug 29 Javascript
Bootstrap每天必学之警告框插件
Apr 26 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
JavaScript文本特效实例小结【3个示例】
Dec 22 Javascript
深度了解vue.js中hooks的相关知识
Jun 14 Javascript
vue实现图片上传到后台
Jun 29 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
第八节--访问方式
2006/11/16 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php邮件发送的两种方式
2020/04/28 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
JS版网站风格切换实例代码
2008/10/06 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
在JS循环中使用async/await的方法
2018/10/12 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
Python制作简易注册登录系统
2016/12/15 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
python 接口返回的json字符串实例
2018/03/27 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
基于pip install django失败时的解决方法
2018/06/12 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
椰子猫砂:CatSpot
2018/08/27 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
渡河少年教学反思
2014/02/12 职场文书
员工离职通知函
2015/04/25 职场文书
未婚证明范本
2015/06/15 职场文书
单位接收证明格式
2015/06/18 职场文书
环境卫生标语
2015/08/03 职场文书
DE1107机评
2022/04/05 无线电