资讯专栏INFORMATION COLUMN

三个例子理解正则匹配里面的最小匹配和全局匹配

xeblog / 1511人阅读

摘要:那么,全局匹配在这个例子里会产生什么样的效果呢最小匹配下本来只能匹配出第一个,而加上全局匹配,匹配会继续进行,将后面的也匹配了出来。

看正则的时候,遇到一些理解上的疑惑,一个是

*?
+?

MDN上的解释为
Matches like * and + from above, however the match is the smallest possible match.

如*,+一样的匹配前面项,匹配是最小可能。

另外一个疑惑是参数g,这个的解释是全局模式,但全局模式究竟是什么意思呢,最小匹配又是什么意思呢?

先从最小匹配的例子开始看一下:

var re =  /".*?"/;
""foo""bar"".match(re)
//return "foo"

MDN对最小匹配使用的是如上的例子,上例如果不用?最小匹配,则匹配不到"foo",我们来试一下

var re =  /".*"/;
""foo""bar"".match(re)
//return "foo""bar"

可见,如果不使用最小匹配,匹配一直进行到了字符串最后一个",前面的"被忽视掉,这种模式成为贪婪模式,就是有多少匹配多少,当*或者+ 后面带?,则采用最小匹配,当查找到第一次成功的匹配,就将匹配结果返回。

那么,全局匹配在这个例子里会产生什么样的效果呢?

var re =  /".*?"/g;
""foo""bar"".match(re)
//return [""foo"", ""bar""]

最小匹配下本来只能匹配出第一个foo,而加上全局匹配,匹配会继续进行,将后面的bar也匹配了出来。这或许就是全局匹配的一个应用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87494.html

相关文章

  • js正则表达式学习笔记

    摘要:说来惭愧,做前端快三年对于正则表达式的应用还是很浅薄,大家都知道正则的速度基本上是最快的,但就是懒得去记那些语法和规则,这次项目中多次用到了需要匹配替换的动作,终于下定决心去研究一下了。 说来惭愧,做前端快三年对于正则表达式的应用还是很浅薄,大家都知道正则的速度基本上是最快的,但就是懒得去记那些语法和规则,这次项目中多次用到了需要匹配替换的动作,终于下定决心去研究一下了。 实例化正则对...

    Towers 评论0 收藏0
  • js谜之正则表达式

    摘要:用正则表达式语言创建的。匹配非数字的字符使用元字符元字符在正则表达式中有特殊含义的字符。正则表达式默认是区别大小写的。正则表达式的字符串表示。若是一个正则表达式,若有标志则替换所有匹配之处,若没有则只替换第一个匹配之处。 前言 好久之前就说要写一篇正则表达式的文章,正则表达式总是记了又忘,忘了再记,记了再忘,卒。言归正传,今天终于要研究一下这个谜一样的正则表达式了。其实正则表达式并不难...

    wendux 评论0 收藏0
  • JavaScript学习之正则表达式

    摘要:正则表达式如何创建正则表达式字面量创建通过构造函数正则表达式实例属性及方法三个修饰符属性,只读不可修改正则表达式是否添加了忽略大小写的修饰符,返回一个布尔值正则表达式是否添加了全局匹配的修饰符,返回一个布尔值正则表达式是否添加了换行的修饰符 正则表达式 如何创建正则表达式 字面量创建var r = /a/; 通过构造函数var r = new RegExp(a); 正则表达式实...

    idealcn 评论0 收藏0
  • 面试官!让我们聊聊正则

    摘要:简述正则表达式是处理字符串的利器,并提高工作效率,一个好的正则能够帮我们省去几十甚至上百行代码。 简述 正则表达式是处理字符串的利器,并提高工作效率,一个好的正则能够帮我们省去几十甚至上百行代码。在工作中,也许你会见到在代码中出现很多正则处理字符串,也可能见到代码中毫无正则,原因在于会正则的人往往处理字符串首先想到用正则去处理,不会的那必然用很多API处理。并且在面试的时候很多同学往往...

    wendux 评论0 收藏0
  • 【愣锤笔记】一支穿云箭、正则来相见

    摘要:表示进行多行匹配。如果正则表达式中含有子表达式,那么该数组后续的项依次为匹配到的第一个子表达式的匹配结果,第二个第个。关于正则方法有一点必须要提,很容易导致错误的情况。这时候直接使用该正则表达式对进行方法调用,却返回了。匹配前一项至少次。有人说,一行正则抵得上100行代码……正则表达式,每门语言都有,在我们的js开发中,最常见的使用场景:一是表单验证,像是登录注册啊,用户输入检测啊,不管在前...

    wangbjun 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<