读书人

JavaScript中新奇的replace

发布时间: 2013-09-04 10:34:09 作者: rapoo

JavaScript中奇妙的replace

这个函数被执行了4次,每次执行都代表正则表达成功匹配到了字符子串,那么对应的每次执行的arguments对象里面又存的什么信息呢?

在这里,我们可以看到:

参数1——表示当前匹配到的结果;

参数2——表示匹配到的正则表达式的“组”(也就是当前正则表达式小括号里面内容——这里指“\d”);

参数3——表示匹配到的字符串的索引位置;

参数4——不用多说,就是源字符串自己。

其实,通过网上的搜索,最终可以找到replace最官方、最标准的用法,当然,通过一些资料的查询,这里传入函数的arguments对象,是一个“动态可伸缩的”的,因为我们所使用的正则表达式里面含有多个组,而这里仅仅只有一个组,所以我们“当且仅当”可以看到第二个参数。

那么,我们把正则表达式换成这样又如何呢?

?

3、运用场景:

利用正则表达式的组定义,可以方便地利用这个特性,快速地找到你想要的信息,这是解决js正则表达式不支持“零宽断言”的一个巧妙的方法,正如我给大家举的例子,我们大多时候在验证的时候,想匹配到“=”后面的数字,而不是“=”+[数字]。

回归我们文章开头的代码,了解过AMD编程的童鞋大概都知道CommonJs编程范式,require.js和sea.js在找寻一个模块的工厂函数内的依赖模块id时,将工厂函数转换成了string,并且替换掉注释之后,利用我们今天说所的这个特性,把工厂函数里面的类似require('xxx/xxx')的代码侦测出来,提取出模块id——‘xxx/xxx’,并且存到数组中,最终来形成这个模块依赖其他模块的id集合。(如果不知所云,请点击这里吧https://github.com/amdjs/amdjs-api/wiki/AMD)

?

今天来刚到ITEye安家,希望今后能学习更多的web知识,也希望交到更多的喜欢前端的朋友!

读书人网 >JavaScript

热点推荐