Javascript/jQuery:将匹配{x}的字符串中的项替换为";jQuery(';#resultsx';).val()”的;

Javascript/jQuery:将匹配{x}的字符串中的项替换为";jQuery(';#resultsx';).val()”的;,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个字符串,其中包含一个公式,如 {1}+{2}-{3}*{4} 我想将其转换为不同输入字段的值,例如 <input id="results1" value="15"> <input id="results2" value="25"> <input id="results3" value="35"> <input id="results4" value="45"> 然后计算为-1535 希望我已经清楚地解释了我想做什么,但是如果我没有解释,

我有一个字符串,其中包含一个公式,如

{1}+{2}-{3}*{4}
我想将其转换为不同输入字段的值,例如

<input id="results1" value="15">
<input id="results2" value="25">
<input id="results3" value="35">
<input id="results4" value="45">
然后计算为-1535

希望我已经清楚地解释了我想做什么,但是如果我没有解释,请告诉我。我已经尝试过使用regexps,但就是不能完全理解它,我不确定这是否是我应该使用的方向。

可以将函数作为第二个参数。这将有助于:

var equ = '{1}+{2}-{3}*{4}';
equ = equ.replace(/{(\d+)}/g, function(match, $1){
    return $('#results'+$1).val();
});

嗯,很容易匹配字符串
/{(\d+)}/
,但是在替换过程中您做了什么?“{1}”将转到“#results1”,这将转到“jQuery('#results1').val()”,这将是“15”。最后您需要
eval(eq)
@remus:一旦验证字符串只包含数字和运算符:)是的,这就是我要找的!只是为了下次我能正确理解它。。。“函数(匹配,$1)”的作用是什么?还有,脱掉{}的最好方法是什么?目前它正在执行#results{1}而不是#results1。@joshhunt:检查文档中的
.replace()
()。第一个参数(
match
)是整个字符串,然后是匹配组(括号内的任何内容)。我的答案中有一个bug,应该是
$(“#results'+$1)
。正则表达式应该处理
{}
。感谢您的时间和有用的答案:)
var equ = '{1}+{2}-{3}*{4}';
equ = equ.replace(/{(\d+)}/g, function(match, $1){
    return $('#results'+$1).val();
});