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 相关文章推荐
JS实现静止元素自动移动示例
Apr 14 Javascript
Angularjs中UI Router全攻略
Jan 29 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
JavaScript递归算法生成树形菜单
Aug 15 Javascript
vue params、query传参使用详解
Sep 12 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
详解iframe跨域的几种常用方法(小结)
Apr 29 Javascript
vue路由守卫及路由守卫无限循环问题详析
Sep 05 Javascript
JS document文档的简单操作完整示例
Jan 13 Javascript
JS数组的常用方法整理
Mar 31 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
Python制作钉钉加密/解密工具
2016/12/07 Python
python 统计代码行数简单实例
2017/05/04 Python
对matplotlib改变colorbar位置和方向的方法详解
2018/12/13 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
护理职业生涯规划书
2014/01/24 职场文书
欢迎家长标语
2014/10/08 职场文书
内勤岗位职责
2015/02/10 职场文书
导游词之西安骊山
2019/12/20 职场文书
SQLServer中exists和except用法介绍
2021/12/04 SQL Server
python语言中pandas字符串分割str.split()函数
2022/08/05 Python