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 出生日期和身份证判断大全
Nov 13 Javascript
js 函数的副作用分析
Aug 23 Javascript
Javascript Objects详解
Sep 04 Javascript
Javascript中的几种URL编码方法比较
Jan 23 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
Mar 30 Javascript
js贪吃蛇游戏实现思路和源码
Apr 14 Javascript
基于JavaScript实现轮播图原理及示例
Apr 10 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
vue过渡和animate.css结合使用详解
Jun 14 Javascript
详解Vue CLI3配置解析之css.extract
Sep 14 Javascript
jquery使用FormData实现异步上传文件
Oct 25 jQuery
JS实现查找数组中对象的属性值是否存在示例
May 24 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防注入,表单提交值转义的实现详解
2013/06/10 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP实现合并discuz用户
2015/08/05 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
了解重排与重绘
2019/05/29 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
python实现各进制转换的总结大全
2017/06/18 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Python聊天室程序(基础版)
2018/04/01 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python实现自动登录后台管理系统
2018/10/18 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
python内置模块collections知识点总结
2019/12/19 Python
Python文件操作模拟用户登陆代码实例
2020/06/09 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
通过代码简单了解django model序列化作用
2020/11/12 Python
PHP中如何创建和修改数组
2012/05/02 面试题
幼儿园元旦亲子活动方案
2014/02/17 职场文书
六五普法规划实施方案
2014/03/21 职场文书
大学生村官承诺书
2014/03/28 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
HAM-2000摩机图
2021/04/22 无线电
用Java实现简单计算器功能
2021/07/21 Java/Android