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 var声明变量背后的原理示例解析
Oct 12 Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
jQuery实现类似老虎机滚动抽奖效果
Aug 06 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
Dec 18 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
详解Vue中watch的高级用法
May 02 Javascript
vue+iview+less 实现换肤功能
Aug 17 Javascript
JavaScript使用闭包模仿块级作用域操作示例
Jan 21 Javascript
vue3.0 自适应不同分辨率电脑的操作
Feb 06 Vue.js
浅谈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
用Flash图形化数据(二)
2006/10/09 PHP
php 抽象类的简单应用
2011/09/06 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
处理Python中的URLError异常的方法
2015/04/30 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Python中base64与xml取值结合问题
2019/12/22 Python
Python列表切片常用操作实例解析
2020/03/10 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
《卖木雕的少年》教学反思
2014/04/11 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
音乐教师求职信范文
2015/03/20 职场文书
教师旷工检讨书
2015/08/15 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
Nginx 匹配方式
2022/05/15 Servers
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL