摘要:那么,全局匹配在这个例子里会产生什么样的效果呢最小匹配下本来只能匹配出第一个,而加上全局匹配,匹配会继续进行,将后面的也匹配了出来。
看正则的时候,遇到一些理解上的疑惑,一个是
*? +?
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
摘要:说来惭愧,做前端快三年对于正则表达式的应用还是很浅薄,大家都知道正则的速度基本上是最快的,但就是懒得去记那些语法和规则,这次项目中多次用到了需要匹配替换的动作,终于下定决心去研究一下了。 说来惭愧,做前端快三年对于正则表达式的应用还是很浅薄,大家都知道正则的速度基本上是最快的,但就是懒得去记那些语法和规则,这次项目中多次用到了需要匹配替换的动作,终于下定决心去研究一下了。 实例化正则对...
摘要:正则表达式如何创建正则表达式字面量创建通过构造函数正则表达式实例属性及方法三个修饰符属性,只读不可修改正则表达式是否添加了忽略大小写的修饰符,返回一个布尔值正则表达式是否添加了全局匹配的修饰符,返回一个布尔值正则表达式是否添加了换行的修饰符 正则表达式 如何创建正则表达式 字面量创建var r = /a/; 通过构造函数var r = new RegExp(a); 正则表达式实...
摘要:简述正则表达式是处理字符串的利器,并提高工作效率,一个好的正则能够帮我们省去几十甚至上百行代码。 简述 正则表达式是处理字符串的利器,并提高工作效率,一个好的正则能够帮我们省去几十甚至上百行代码。在工作中,也许你会见到在代码中出现很多正则处理字符串,也可能见到代码中毫无正则,原因在于会正则的人往往处理字符串首先想到用正则去处理,不会的那必然用很多API处理。并且在面试的时候很多同学往往...
摘要:表示进行多行匹配。如果正则表达式中含有子表达式,那么该数组后续的项依次为匹配到的第一个子表达式的匹配结果,第二个第个。关于正则方法有一点必须要提,很容易导致错误的情况。这时候直接使用该正则表达式对进行方法调用,却返回了。匹配前一项至少次。有人说,一行正则抵得上100行代码……正则表达式,每门语言都有,在我们的js开发中,最常见的使用场景:一是表单验证,像是登录注册啊,用户输入检测啊,不管在前...
阅读 2081·2021-11-11 16:55
阅读 3149·2021-10-11 10:58
阅读 3016·2021-09-13 10:28
阅读 3932·2021-07-26 23:57
阅读 979·2019-08-30 15:56
阅读 1317·2019-08-29 13:15
阅读 1241·2019-08-26 18:18
阅读 1243·2019-08-26 13:44