Javascript 替代品

标签 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.return语句的使用

最佳答案

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

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

  2. 该函数将字典作为 o 传递,并使用上面的正则表达式执行 replace。每当匹配时,将调用 replace 的回调函数。 a是整个匹配部分,b是“Parenthesized Substring Matches”对应的子匹配部分。回调函数在字典中查找b作为键,并返回对应的值

  3. return 语句表示如果r 的类型是字符串或数字,则返回r;否则返回a

您可以查看 example code由 Jared Farrish 提供,它非常清楚地展示了匹配和替换是如何工作的。

关于Javascript 替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10959131/

相关文章:

regex - 以编程方式查找正则表达式的字符串?

javascript - 当它不是应用于元素的唯一类时,通过了解其名称的一部分来获取类名称

电子邮件事件中的 JavaScript

javascript - string.replace 在 Firefox 中不起作用?

javascript - Express.js 应用程序在本地工作正常,但部署在 Heroku 上时无法工作

java - 用于登录/注册/检查 HttpSession 的 Web servlet 方法是否有效?

javascript - 如何在我的网页中嵌入具有特定名称属性的网页的一部分?

php - 调用未定义的方法 dbConnection::query() - 如何修复它?

javascript - 闭包优化+保留函数名

javascript - 过滤并删除数组