Javascript 如何替换数字中的多个特殊字符?

Javascript 如何替换数字中的多个特殊字符?,javascript,regex,Javascript,Regex,我有一个2500.00的数字,我想把这个数字转换成2.500,00。因此,我们可以使用replace like替换特殊字符 var x = 2,500.00; x.replace(/,/g,"."); 对于“点”,我们也能做到。但在这种情况下,它将不起作用,因为当我们像上面那样为逗号应用替换函数时,数字将变为2.500.00,如果我们现在应用,它将变为2500,00 那么有没有办法将2500.00转换成2.500,00呢?您可以使用: var x = '2,123,500.00'; var

我有一个2500.00的数字,我想把这个数字转换成2.500,00。因此,我们可以使用replace like替换特殊字符

var x = 2,500.00; 
x.replace(/,/g,".");
对于“点”,我们也能做到。但在这种情况下,它将不起作用,因为当我们像上面那样为逗号应用替换函数时,数字将变为2.500.00,如果我们现在应用,它将变为2500,00

那么有没有办法将2500.00转换成2.500,00呢?

您可以使用:

var x = '2,123,500.00'; 
var arr = x.split('.');
var y = arr[0].replace(/,/g, '.') + ',' + arr[1];
//=> 2.123.500,00

为什么不使用内置方法正确设置数字格式

在这里就行了

如果你真的有一个你说的数字,你可以很容易地用正确的语言环境实现这一点。如果您有数字的字符串表示形式,则首先必须对其进行解析。

可以使用以下函数:

'2,123,500.00'.replace(/[,.]/g, function(c){ return c===',' ? '.' : ','; });

很幸运,
.replace()
接受函数作为第二个参数。该函数将匹配的字符串作为参数,返回的值将是
.replace()
replace\u值

简而言之,您只需检查匹配的字符串并返回正确的值:

var str=“2500.00”;
变量已更改\u str=str.replace(/,| \./g,函数(旧){
如果(旧的=='。)
返回“,”;
else if(old===',')
返回“.”;
});
document.write(已更改)
此(现在)功能适用于任何数量的逗号或点,即使是尾随或前导的点或逗号

HTML:


JS:

var x=',2.123,50.0.00';
_点之间的var=x.split('.');
对于(变量i=0;i<点间长度;i++){
点间[i]=点间[i]。替换(/,/g,,);
}
变量y=点之间的连接(',');
document.getElementById('result').innerHTML=y;

首先替换为其他内容,如
*
。例如
->
*
,然后
->
,最后是
*
->
。感谢您的帮助,evolutionbox,但我认为这是一种解决方法。有没有直接的方法?没有跨浏览器兼容的直接函数(不是IE11+)。如果您使用的是数字,您也可以使用它来解析和重新格式化数字。
var x=2500.00
是一个语法错误。唯一需要注意的是浏览器的兼容性。这是一个只有IE11+的解决方案。卡尔·安德烈·加农:哦,在狩猎中它甚至不起作用。在哪里?事实上,我错了(并且学到了一些新的东西)。我认为
会匹配每个字符…@Karl AndréGagnon它确实匹配每个字符,但当它在字符类中时不会匹配。character类按字面意思匹配内容。请参见此处:@Pluto这不完全正确,例如,字符类中的.\s仍然匹配空格。@这是传递给替换函数的匹配字符。如果更清楚的话,您可以将其重命名为
match
。此解决方案适用于点后只有一个点而没有逗号的特定情况。否则,此解决方案将不起作用。根据OP,输入中确实只有一个点。
<div id="result"></div>
var x = '.,2.123,50.0.00.';

var between_dots = x.split('.');
for (var i = 0; i < between_dots.length; i++) {
    between_dots[i] = between_dots[i].replace(/,/g, '.');
}
var y = between_dots.join(',');

document.getElementById('result').innerHTML = y;