Javascript取代

时间:2012-06-09 07:09:29

标签: javascript regex web

我最近遇到了crockford的Javascript supplant函数。功能就像这样 -

if (!String.prototype.supplant) {
    String.prototype.supplant = function (o) {
        return this.replace(/{([^{}]*)}/g,
            function (a, b) {
                var r = o[b];
                return typeof r === 'string' || typeof r === 'number' ? r : a;
            }
        );
    };
}

我需要了解这个函数的机制以及这个函数究竟是如何工作的。我遇到过很多解释,但都会通过引入使事情变得更糟的技术来使事情变得复杂。

试图寻找

1. regex解释

2.函数(a,b)代码块的逻辑

3.使用该退货声明

1 个答案:

答案 0 :(得分:3)

正如Tomalak所说,正则表达式中的空格并非微不足道

  1. 正则表达式基本匹配如下:{ ... }[^{}]表示花括号中的内容可以是除了卷曲的nraces之外的任何内容。 *表示内容的长度可以是零或任何数字。括号内的部分是Parenthesized Substring Matches

  2. 该函数以o的形式传递字典,并使用上面的正则表达式执行replace。只要匹配,就会调用replace的回调函数。 a是整个匹配的部分,b是与“带括号的子串匹配”对应的子匹配部分。回调函数查找b作为字典中的键,并返回相应的值

  3. return语句表示r的类型是字符串还是数字,然后返回r;否则返回a

  4. 你可以查看Jared Farrish提供的example code,它可以非常清楚地显示匹配和替换的工作方式。