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 相关文章推荐
常用js脚本
Dec 03 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
Apr 14 Javascript
在ASP.NET中使用JavaScript脚本的方法
Nov 12 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
JS中生成随机数的用法及相关函数
Jan 09 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
IE8兼容Jquery.validate.js的问题
Dec 01 Javascript
bootstrap中模态框、模态框的属性实例详解
Feb 17 Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 Javascript
关于JavaScript的单双引号嵌套问题
Aug 20 Javascript
Node.js 使用jade模板引擎的示例
May 11 Javascript
详解使用VueJS开发项目中的兼容问题
Aug 02 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 intval的测试代码发现问题
2008/07/27 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
Vue axios设置访问基础路径方法
2018/09/19 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
用Python实现数据的透视表的方法
2018/11/16 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
详细分析Python collections工具库
2020/07/16 Python
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
化工机械应届生求职信
2013/11/04 职场文书
大学生暑期实践感言
2014/02/26 职场文书
高中军训感言800字
2014/03/05 职场文书
母亲节演讲稿
2014/05/27 职场文书
关于安全的广播稿
2014/10/23 职场文书
公司员工离职感言
2015/08/03 职场文书
月考总结与反思
2015/10/22 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
五年级作文之成长
2019/09/16 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang