寻找有关匹配正则表达式模式中的花括号的帮助。 我尝试了不同的逃脱组合,并且符号匹配运气不佳。也许是因为星期五下午,我忽视了一些事情;但是你的想法将不胜感激。以下代码:
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/
答案 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 +'} $
'
删除^和$。