首先, 先理解下概念: 非贪婪模式 即在正则后加问号"?" 意义为按需匹配,
不明白, 我们先往下看
共用函数:
// 即为字符串高亮为红色
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
分享到:
相关推荐
1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配。非贪婪模式只被部分NFA引擎...
Javascript 严格模式详解
主要介绍了python re模块匹配贪婪和非贪婪模式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
C#单例模式C#单例模式详解C#单例模式详解C#单例模式详解
什么是正则表达式的贪婪与非贪婪匹配 ...下面通过实例代码看下正则表达式的贪婪模式与非贪婪模式,具体内容如下所示: 贪婪模式:能匹配的最大部分 s = This is a number 234-235-22-4223 r = re
单例模式详解~~单例模式详解~~单例模式详解~~
单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解单件模式详解
java23种设计模式详解附带所有代码实现,适合初学者,请点个赞,谢谢
23种设计模式详解,23种设计模式详解23种设计模式详解23种设计模式详解
设计模式,设计模式详解.ppt,Refactoring-重构.ppt
java设计模式详解,内容包括java开发中常用的开发模式,例如单例模式以及相应的实现方法等,我找了好久,所以分稍微多点
spring责任链模式详解,包含项目中应用
ACE proactor 与 Reactor 模式的详解
Java中23种设计模式详解,很不错,很详细,看了后体会很多!
javascript 基本设计模式详细介绍 附带js 函数式编程pdf资源
常见的软件设计模式详解,包括策略模式、装饰者模式、适配器模式、观察者模式