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下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 Javascript
Javascript 刷新全集常用代码
Nov 22 Javascript
jquery uaMatch源代码
Feb 14 Javascript
JavaScript中toString()方法的使用详解
Jun 05 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
Element input树型下拉框的实现代码
Dec 21 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 Javascript
JS实现普通轮播图特效
Jan 01 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 Web木马扫描器代码分享
2015/09/06 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
ajax的hide隐藏问题解决方法
2012/12/11 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
2017/08/17 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案
2018/05/15 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
使用tensorflow实现线性回归
2018/09/08 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
python文件路径操作方法总结
2020/12/21 Python
2014政务公开实施方案
2014/02/19 职场文书
愚人节活动策划方案
2014/03/11 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Docker下安装Oracle19c
2022/04/13 Servers