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实现兼容IE7的类库 IE7_0_9.zip提供下载
Aug 08 Javascript
JavaScript 快捷键设置实现代码
Mar 13 Javascript
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
批量实现面向对象的实例代码
Jul 01 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
Aug 29 Javascript
详解vue-video-player使用心得(兼容m3u8)
Aug 23 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
Mar 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
PHP的栏目导航程序
2006/10/09 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
js停止输出代码
2008/07/20 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
2020/11/05 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
python模块之StringIO使用示例
2015/04/08 Python
python计算方程式根的方法
2015/05/07 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
财务会计人员岗位职责
2013/11/30 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
行政专员求职信范文
2014/05/03 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
医生见习报告范文
2014/11/03 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
同意报考证明
2015/06/17 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
JavaScript 原型与原型链详情
2021/11/02 Javascript
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server