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实现打开本地文件或文件夹
Mar 09 Javascript
用document.documentElement取代document.body的原因分析
Nov 12 Javascript
javascript向flash swf文件传递参数值注意细节
Dec 11 Javascript
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
JavaScript计算器网页版实现代码分享
Jul 15 Javascript
基于jQuery实现中英文切换导航条效果
Sep 18 Javascript
vue双向绑定简要分析
Mar 23 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
Aug 31 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 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
第二节 对象模型 [2]
2006/10/09 PHP
DISCUZ 分页代码
2007/01/02 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
PHP查询快递信息的方法
2015/03/07 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
javascript动态设置样式style实例分析
2015/05/13 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
原生js实现点击按钮复制内容到剪切板
2020/11/19 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
python中的sort方法使用详解
2014/07/25 Python
Python是编译运行的验证方法
2015/01/30 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python实现图片压缩代码实例
2019/08/12 Python
python os模块在系统管理中的应用
2020/06/22 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Python创建自己的加密货币的示例
2021/03/01 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
大学生个人自我鉴定
2013/12/03 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
2014年信用社工作总结
2014/11/25 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python
nginx常用配置conf的示例代码详解
2022/03/21 Servers
netty 实现tomcat的示例代码
2022/06/05 Servers