
本文中的示例描述了js正则表达式惰性匹配和贪婪匹配的用法. 与您分享以供参考,如下:
在讨论贪婪模式和惰性模式之前,让我们回顾一下JS常规基础:
基本写作:
①没有双引号,只需使用// include => /wehfwue123123/.test();
②反斜杠\表示转义=> / \. jpg $ /
③基本用法: .test(str);
语法:
①锚点等级
/ ^ a / =>以“ a”开头
/ \. jpg $ / =>以“ .jpg”结尾
②字符类
[abc]: a或b或c
[0-9]: 一个数字
[a-z]: 一个字母
.: 任何字符

③元字符
^: 在[]中表示否,在[]外部表示开头
\ d: [0-9]
\ s: 空白
\ w: [A-Za-z0-9 _]
\ D: [^ \ d]-不是数字
\ S: 非空白字符
④量词
{m,n}: m至n次
元字符指示:
*: {0,}
?: {0,1}
+: {1,}
难度: 贪婪模式/懒惰模式
贪婪模式-在成功匹配的前提下,尝试尽可能多地匹配

惰性模式-在成功匹配的前提下,尝试尽可能少地匹配
说明1: 结合代码和文本
正则表达式中的贪婪和惰性量词可以控制表达式匹配过程. 我们知道量词吗? ,*,+的含义,可以指定相关模式的出现次数,默认情况下我们使用贪婪量词,其匹配过程是从整个字符串开始看,如果没有匹配,请删除最后一个,然后查看是否匹配,依此类推,直到匹配或字符串为空为止,例如:
vars ="abbbaabbbaaabbb1234"; varre1=/.*bbb/g;//*是贪婪量词 re1.test(s);
此匹配过程将从整个字符串开始:
re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续
re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续
re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续
re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续
re1.test("abbbaabbbaaabbb");//true ,结束
在贪婪的量词之后再添加一个?它成为一个懒惰的量词. 它的匹配过程是相反的,从前面的第一个开始,如果不匹配则添加一个,依此类推,直到字符串的末尾,以上面的为例.
vars ="abbbaabbbaaabbb1234"; varre1=/.*bbb/g;//*是惰性量词 re1.test(s);
其匹配过程如下:
re1.test("a");//false, 再加一个
re1.test("ab");//false, 再加一个
re1.test("abb");//false, 再加一个
re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始
re1.test("a");//false, 再加一个
re1.test("aa");//false, 再加一个
re1.test("aab");//false, 再加一个
re1.test("aabb");//false, 再加一个
re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始
摘要:
默认贪婪匹配是从前到后,最大长度匹配,延迟匹配是在量词后加一个?从字符串开头开始匹配,最小长度匹配
PS: 以下是两个更方便的正则表达式工具供您参考:
JavaScript正则表达式测试工具:
正则表达式生成工具:

对于更多对JavaScript相关内容感兴趣的读者,您可以查看本网站的主题: “ JavaScript替换操作技能概述”,“ JavaScript搜索算法技能概述”,“ JavaScript数据结构和算法技能概述”. ,“ JavaScript遍历算法“技巧摘要”,“ JavaScript中json操作技巧摘要”,“ JavaScript错误和调试技巧摘要”和“ JavaScript数学操作用法摘要”
我希望本文对JavaScript编程的每个人都有帮助.
时间: 2016-12-25
标签:
->
本文分析了js正则表达式的最长匹配(贪婪匹配)和最短匹配(惰性匹配)的用法. 我将其共享给您,以供您参考,如下: 最近,我阅读了RequireJS 2.1.15源代码,该代码在源代码的开头定义一系列变量,有4个正则表达式: var commentRegExp = /( \ / \ *([\ s \ S] *?)\ * \ / |([^: ] | ^)\ / \ /(. *)$)/ mg,cjsRequireRegExp = /[^.]\s* require \ s * \(\ s * [“']([^'” \ s] +)[“'] \ s * \)/ g,jsS
所谓的贪婪匹配是指尽可能地匹配重复的字符,例如: “ aaaaa” .match(/ a + /); // [“ aaaaa”,索引: 0,输入: “ aaaaa”]非贪婪匹配是为了尽可能少地匹配,用法是添加一个“?”在量词之后,例如: “ aaaaa” .match(/ a +?/); // [“ a”,索引: 0,输入: “ aaaaa”]但非贪心匹配
本文中的示例总结了JS正则表达式的贪婪模式和非贪婪模式. 我将其共享给您,以供您参考,如下: 首先,以前的js代码:
宝宝美哭
以后12海里直接不承认
送测啊