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 相关文章推荐
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
javascript中Object使用详解
Jan 26 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
Dec 03 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
Feb 22 Javascript
微信小程序实现登录页云层漂浮的动画效果
May 05 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
js中this对象用法分析
Jan 05 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
深入理解Antd-Select组件的用法
Feb 25 Javascript
extjs图形绘制之饼图实现方法分析
Mar 06 Javascript
Openlayers绘制地图标注
Sep 28 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
Zend studio文件注释模板设置方法
2013/09/29 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
javascript parseInt 函数分析(转)
2009/03/21 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python重新引入被覆盖的自带function
2014/07/16 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
小学校园广播稿(3篇)
2014/09/19 职场文书
电气工程师岗位职责
2015/02/12 职场文书