【问题标题】:Why does my JavaScript regex not work?为什么我的 JavaScript 正则表达式不起作用?
【发布时间】:2010-08-30 04:46:10
【问题描述】:

我不明白为什么,但是这段代码给了我一个 JavaScript 错误:

<script type="text/javascript">

String.prototype.format = function(values) {
    var result = this;
    for (var i = 0, len = values.length; i < len; i++) {
        result = result.replace(new RegExp("{" + i + "}", "g"), values[i]);
    }
    return result;
};

alert("Hi {0}, I'm {1}. Are you, {0}?".format(["Chris", "swell"]));

</script>

错误

抛出异常:量词无效

这有什么问题?

【问题讨论】:

  • 这就像 JavaScript 的 printf! :P
  • 顺便说一句,您始终可以使用arguments 变量而不是将数组作为参数传递。

标签: javascript regex string


【解决方案1】:

我相信你必须逃脱{}

String.prototype.format = function(values) {
    var result = this;
    for (var i = 0, len = values.length; i < len; i++) {
        result = result.replace(new RegExp("\\{" + i + "\\}", "g"), values[i]);
    }
    return result;
};

【讨论】:

    【解决方案2】:

    {} 在正则表达式中具有特殊含义。它们用于指定精确的量词。

    按字面意思对待它们,只需像这样在它们前面加上两个反斜杠:\\{\\}

    一个不起作用,正如我刚刚发现的那样。它必须将其中之一视为正则表达式分隔符。

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 2011-11-17
      • 1970-01-01
      相关资源
      最近更新 更多