`
yl.fighter
  • 浏览: 257725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS 非贪婪模式详解

    博客分类:
  • Web
阅读更多
首先, 先理解下概念: 非贪婪模式 即在正则后加问号"?" 意义为按需匹配,
不明白, 我们先往下看

共用函数:
// 即为字符串高亮为红色
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
分享到:
评论

相关推荐

    javascript正则表达式中分组详解.docx

    对于贪婪与非贪婪模式的区别,贪婪模式会尽可能匹配更多的字符,而非贪婪模式则尽可能匹配更少的字符。例如: ```javascript var reg = /test(\d)+/; var str = 'new test001 test002'; console.log(str.match(reg)...

    javaScript 正则表达式详解

    JavaScript 正则表达式详解 JavaScript 中的正则表达式是指使用特殊字符来描述字符串模式的表达式。正则表达式可以用来匹配、检索和操作字符串。 RegExp 对象 在 JavaScript 中,正则表达式可以被定义为一个 ...

    javascript正则表达式详解

    JavaScript正则表达式是JavaScript语言中一种极为重要的文本处理工具,它允许通过简洁的语法定义文本的匹配模式。这些模式可用来对字符串进行检索、替换、提取等操作。了解和掌握JavaScript正则表达式,对于提高...

    javascript正则表达式中分组详解_.docx

    `指定非贪婪模式,即尽可能少地匹配。这意味着每个`(\d)`都会捕获一个数字,直到不再有更多数字可匹配为止。 ```javascript var reg = /test(\d)+?/; var str = 'new test001 test002'; console.log(str.match...

    javascript正则表达式中分组详解

    相对应的,非贪婪模式会尽可能少地匹配字符,如果在量词后面加上一个问号,如(\d)+?,则会得到"0"作为匹配结果。 了解和掌握这些知识点可以帮助我们在使用JavaScript正则表达式进行文本处理时更加准确高效。无论是...

    正则表达式工具和常用表达式详解.zip

    6. **贪婪与非贪婪匹配**:默认情况下,量词是贪婪的,会尽可能多地匹配字符,但加上 "?" 可以使其变为非贪婪,只匹配最少的字符。 7. **回溯与效率**:理解正则表达式引擎如何处理回溯,以避免在处理大型数据时的...

    javascript 正则表达式_上

    #### 五、贪婪模式与非贪婪模式 - **贪婪模式**:默认情况下,量词是贪婪的,即尽可能多地匹配字符。例如,`\d{3,5}`在`123456789`中将匹配`12345`和`6789`。 - **非贪婪模式**:通过在量词后添加`?`,可以使量词...

    JavaScript RegExp 对象用法详解

    JavaScript RegExp对象用法详解 1. 正则表达式概念与作用:JavaScript中的RegExp对象是一种模式,用于匹配字符串中的字符组合。正则表达式可用于文本搜索、替换和验证输入。基本模式可以是一个单独的字符,复杂模式...

    正则表达式

    - **非贪婪模式**:通过在限定符后加一个问号(`?`)来实现非贪婪模式,即尽可能少地匹配字符。 - 示例: ```javascript var reg = /c{1,}?/; var str = 'cccccTest'; execReg(reg, str); // 输出 "c" ``` ##...

    JavaScript正则表达式之后向引用实例代码

    贪婪、非贪婪与回溯PHP正则表达式的效率 回溯与固化分组正则表达式之回溯AS3 js正则表达式 反向引用(backreference)详解JavaScript正则表达式之分组匹配及反向引用php正则表达式的模式修正符和逆向引用使用介绍PHP...

    JS中的正则表达式

    ### JS中的正则表达式详解 #### 正则表达式的创建与使用 在JavaScript中,正则表达式是用于匹配字符串的一种强大工具。通常有两种方式来创建正则表达式对象: 1. **字面量表示法**:如 `var reg = /pattern/;` 2. *...

    Java 正则表达式详解

    :...)`)等更复杂的结构,以及更多的元字符和标志,如贪婪和非贪婪匹配、多行模式等。学习和熟练掌握正则表达式能显著提高处理文本数据的效率。 总结来说,Java正则表达式提供了一套强大的工具来处理文本,通过理解...

    Java JS正则表达式大全

    **Java与JavaScript正则表达式详解** 在编程领域,正则表达式(Regular Expression)是一种强大的文本处理工具,尤其在处理字符串匹配、查找、替换和提取等任务时,它的功能尤为强大。Java和JavaScript虽然源自不同...

    javaScript正则表达式应用

    `:匹配前面的字符0次或1次,用于创建非贪婪匹配。 - `\d`:匹配数字(等同于`[0-9]`)。 - `\D`:匹配非数字字符。 - `\w`:匹配字母、数字或下划线(等同于`[a-zA-Z0-9_]`)。 - `\W`:匹配非字母、数字或...

    javascript 正则表达式分组、断言详解

    )`定义了一个非贪婪匹配的分组,而`&lt;/\1&gt;`中的`\1`就是引用了第一个分组匹配到的内容,这样就只需要写一次`title`。 ### 正则表达式断言 断言用于指定一个位置,使得正则表达式引擎在该位置进行匹配时,仅验证该...

    正则表达式详解

    ` 使量词变得非贪婪,如 `.*?` 会尽可能少地匹配字符。 2. **正向前瞻**与**负向前瞻**:`(?=pattern)` 是正向前瞻,确保匹配的位置后面是特定模式;`(?!pattern)` 是负向前瞻,确保后面不是特定模式。 3. **选择...

    正则的使用

    ##### 实例 2:使用非贪婪模式 现在,我们希望尽可能少地匹配 `'c'` 字符,即使字符串中包含更多的 `'c'`: ```javascript var reg = /c{3,4}?/; var str = 'cccccTest'; console.log(reg.exec(str)); // 输出 [...

Global site tag (gtag.js) - Google Analytics