正则表达式匹配花括号

时间:2011-03-25 20:19:43

标签: javascript regex

寻找有关匹配正则表达式模式中的花括号的帮助。 我尝试了不同的逃脱组合,并且符号匹配运气不佳。也许是因为星期五下午,我忽视了一些事情;但是你的想法将不胜感激。以下代码:

function stringFormat(str, arr) {
   for (var i = 0; i < arr.length; i++) {
        var regExp = new RegExp('^\{' + i + '\}$', 'g');
        str = str.replace(regExp, arr[i]);   
    }
    return str;  
}

var str = '<p>The quick {0}, brown {1}</p>';

$('#test').html(stringFormat(str, ['brown', 'fox']));

我也开始了这个问题,http://jsfiddle.net/rgy3y/1/

3 个答案:

答案 0 :(得分:14)

不是试图匹配一堆不同的数字,为什么不一下子就这么做呢:

function stringFormat(str, arr) {
  return str.replace(
      /\{([0-9]+)\}/g,
      function (_, index) { return arr[index]; });
}

在你的例子中,

var str = '<p>The quick {0}, brown {1}</p>';

// Alerts <p>The quick brown, brown fox</p>
alert(stringFormat(str, ['brown', 'fox']));

如果arr包含类似“{1}”的字符串,那么这样做的好处就是不会发生任何奇怪的事情。例如
stringFormat('{0}', ['{1}', 'foo']) === '{1}'一致而不是'foo'与原始版本的固定版本相同,但与stringFormat('{1}', ['foo', '{0}']) === '{0}'不一致

答案 1 :(得分:8)

要在字符串文字中获得\,您需要输入\\。特别是,'\{' == '{'。你想要'\\{'

答案 2 :(得分:0)

不熟悉javascript(或其他)正则表达式,但您只匹配仅包含{ X }的表达式(或仅包含该表达式的行,同样取决于您的正则表达式)。
'^ {'+ i +'} $'

删除^和$。