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 相关文章推荐
关于Javascript 的 prototype问题。
Jan 03 Javascript
用jQuery简化JavaScript开发分析
Feb 19 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
Dec 05 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
jquery访问ashx文件示例代码
Aug 11 Javascript
js简单判断flash是否加载完成的方法
Jun 21 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
Aug 24 Javascript
自学实现angularjs依赖注入
Dec 20 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
微信公众号平台接口开发 获取access_token过程解析
Aug 14 Javascript
解决Layui中templet中a的onclick参数传递的问题
Sep 20 Javascript
Vue实现菜单切换功能
Nov 08 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
php4的session功能评述(一)
2006/10/09 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
深入理解PHP中的global
2014/08/19 PHP
Chrome Web App开发小结
2014/09/04 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
BootStrap中
2016/12/10 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
Python的SQLAlchemy框架使用入门
2015/04/29 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
Python之字典添加元素的几种方法
2020/09/30 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
法制主题班会教案
2015/08/13 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
python实现进度条的多种实现
2021/04/29 Python
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python