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 MD4
Dec 20 Javascript
Ext.MessageBox工具类简介
Dec 10 Javascript
js控制input框只读实现示例
Jan 20 Javascript
javascript面向对象特性代码实例
Jun 12 Javascript
jQuery中wrapInner()方法用法实例
Jan 16 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
May 12 Javascript
基于jquery步骤进度条源码分享
Nov 12 Javascript
深入理解JavaScript 函数
Jun 06 Javascript
20行JS代码实现网页刮刮乐效果
Jun 23 Javascript
node和vue实现商城用户地址模块
Dec 05 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
Jan 19 Javascript
微信小程序 如何获取网络状态
Jul 26 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/12/06 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
JS event使用方法详解
2008/04/28 Javascript
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python和bash统计CPU利用率的方法
2015/07/10 Python
详解Python进程间通信之命名管道
2017/08/28 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
人工神经网络算法知识点总结
2019/06/11 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
python3代码输出嵌套式对象实例详解
2020/12/03 Python
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
电子商务专业个人的自我评价分享
2013/10/29 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
电力安全学习心得体会
2016/01/18 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB