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]