JS 非贪婪模式详解

首先, 先理解下概念: 非贪婪模式 即在正则后加问号"?" 意义为按需匹配, 
不明白, 我们先往下看 

共用函数: 

// 即为字符串高亮为红色  
function hightlight(str){
return "<font color=red>"+str+"</font>";
}

1. 首先, 正常使用如下(贪婪模式) 

var reg = new RegExp('(a+)'); // a+为 一到多个a匹配  
var str = 'aaa';
var newstr = str.replace(reg, hightlight);
document.write(newstr + "<br/>");

输出: aaa 

注: 以上代码等同于: 

var reg = new RegExp('(a+)'); // a+为 一到多个a匹配  
var str = 'aaa';
var newstr = str.replace(reg, "<font color=red>$1</font>"); //$1 表示正则中匹配括号内的内容的第一个
document.write(newstr + "<br/>");

 

2. 同样是上边的例子, 我们使用非贪婪模式 

var reg = new RegExp('(a+?)'); // 加上?号后为非贪婪模式, 即匹配完成即返回, 不继续  
var str = 'aaa';
var newstr = str.replace(reg, hightlight);
document.write(newstr + "<br/>");

输出: aaa 


3. 非贪婪模式中应注意: 
正则是从左到右开始匹配所有项, 直到匹配为止, 那么 
如下, 它匹配的就应该是整段字符, 而不是单独的一个b 

var reg = new RegExp('(a*?b)');  
var str = 'aaab';
var newstr = str.replace(reg, hightlight);
document.write(newstr);

输出: aaab

转载于:https://www.cnblogs.com/lullabyus/archive/2012/03/07/2382873.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript的设计模式详解是一本由涂根华所写的书籍,它常详细地介绍了JavaScript的设计模式。这本书以单例模式为开篇,单例模式保证一个类只有一个实例,并提供一个全局访问点。这是一种常用的模式,可应用于许多场景中。 此外,这本书还介绍了解释器模式。解释器模式是指给定一个语言,定义该语言的文法表示,并定义一个解释器来解释语言中的句子。在开篇之前,还科普了一些相关概念,如抽象语法树。 这本书是为那些正在学习前端的人准备的,它提供了深入的知识和实践经验,希望能帮助更多的前端开发者。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Javascript设计模式详解](https://blog.csdn.net/lhjuejiang/article/details/80635527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [JavaScript设计模式之单例模式详解](https://download.csdn.net/download/weixin_38623366/13629637)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [javascript设计模式之解释器模式详解](https://download.csdn.net/download/weixin_38734008/14813983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值