Javascript JS-Regex替换在一个调用中发生多次,如何让它运行一次?

Javascript JS-Regex替换在一个调用中发生多次,如何让它运行一次?,javascript,regex,string,Javascript,Regex,String,我有一根绳子 Yes (+1500) 我想用(+$1700)(或-$1700,或0,或任何数字)替换(+$1500)) 所以我用这个正则表达式进行测试:/\(\+(.+?)\)\(\-(.+?)\)/ 如果我和其他数字一起尝试,它会返回类似的值 var string = 'Yes (+ $1500)'; string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(+ $1700)'); // returns "Yes (+ $1500700)" // desir

我有一根绳子

Yes (+1500)
我想用
(+$1700)
(或
-$1700
,或
0
,或任何数字)替换
(+$1500)

所以我用这个正则表达式进行测试:
/\(\+(.+?)\)\(\-(.+?)\)/

如果我和其他数字一起尝试,它会返回类似的值

var string = 'Yes (+ $1500)';
string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(+ $1700)');

// returns "Yes (+  $1500700)"
// desired result: "Yes (+ $1700)"

var string = 'Yes (+ $1500)';
string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(- $1700)');

// returns "Yes (-  $1500700)"
// desired result: "Yes (- $1700)"

var string = 'Yes (+ $1500)';
string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(- $12345)');

// returns "Yes (-  $15002345)"
// desired result: "Yes (- $12345)"
我认为这是因为regex命令
/\(\+(.+?)\)\(\-(.+?)\)/
从字符串
Yes(+$1500)
返回多个匹配项:

所以我觉得有点奇怪。replace看到2个或更多与regex命令的匹配项,并尝试同时替换它们

.replace()
是替换多个匹配项还是仅替换一个匹配项



下面是我的regex命令的一个regex示例:

您需要在替换字符串中加倍
$
,您可以使用
[-+]
字符类来匹配
-
+

var字符串='Yes(+$1500)';

document.body.innerHTML=string.replace(/\([+-])[^]*\)/,“($1$$1700)”
您需要在替换字符串中加倍
$
,然后您将得到
Yes(+$1700)
Ugh。太简单了。谢谢Wiktor!
var string = 'Yes (+ $1500)';
string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(+ $1700)');

// returns "Yes (+  $1500700)"
// desired result: "Yes (+ $1700)"

var string = 'Yes (+ $1500)';
string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(- $1700)');

// returns "Yes (-  $1500700)"
// desired result: "Yes (- $1700)"

var string = 'Yes (+ $1500)';
string.replace(/\(\+(.+?)\)|\(\-(.+?)\)/, '(- $12345)');

// returns "Yes (-  $15002345)"
// desired result: "Yes (- $12345)"
var string = 'yes (+ $1500)';
/\(\+(.+?)\)|\(\-(.+?)\)/.exec(string);

// returns: 
//     ["(+ $1500)", " $1500", undefined]