首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS 非贪婪方式详解

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

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

热点排行