【问题标题】:Shorthand javascript regex .replace速记 javascript 正则表达式 .replace
【发布时间】:2013-10-13 21:32:39
【问题描述】:

我正在尝试编写一些代码高尔夫,其中我使用了 javascript 的正则表达式 .replace() 方法,并作为第二个参数传递了一个匿名函数,例如 .replace(/(exp)/,function(x){return x.toUpperCase();}),据我所知,这是它需要的方式如果您使用匹配的子字符串来确定要替换的内容,则完成。

至少我是这么理解的from here

有没有更短的方法来做到这一点?专门去掉function(x){return;}

我看到这段代码有一个没有函数调用 .replace(/([\[\]])/g, '\\$1'); 的替换。

【问题讨论】:

  • 您看到的代码只会替换为替换正则表达式模式中匹配的代码。您传递的匿名函数正在将该匹配转换为大写。您可以安全地使用.replace(/([\[\]])/g, '\\$1') 在方括号前添加反斜杠。
  • 但是有没有办法在没有匿名函数的情况下做我想做的事?
  • 如果没有匿名函数,您不能将函数用于替换。
  • 您的问题背后的问题是什么?可读性?
  • @DioF 不,我想看看我能不能让它更短。

标签: javascript regex replace shorthand


【解决方案1】:

从技术上讲,您可以通过将函数分配给变量来简化代码:

<script>
var u = function(x) {
    return x.toUpperCase();   
}
</script>

然后用变量代替匿名函数:

str.replace(/(exp)/, u);

但它移动代码而不是消除它。尽管如此,它还是达到了预期的简洁性。

JSFiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2011-03-04
    相关资源
    最近更新 更多