替换,(逗号)by。(点)和。(点)by,(逗号)

时间:2015-12-12 08:49:02

标签: javascript regex

我的字符串为"1,23,45,448.00",我想用小数点替换所有逗号,用逗号替换所有小数点。

我要求的输出是" 1.23.45.448,00"

我已尝试将,替换为.,如下所示:

var mystring = "1,23,45,448.00"
alert(mystring.replace(/,/g , "."));

但是,在此之后,如果我尝试将.替换为,,它还会将第一个替换.替换为,,从而导致输出为{{1} }}

2 个答案:

答案 0 :(得分:21)

replace与回调函数一起使用,将,替换为.,将.替换为,。函数返回的值将用于替换匹配的值。



var mystring = "1,23,45,448.00";

mystring = mystring.replace(/[,.]/g, function (m) {
    // m is the match found in the string
    // If `,` is matched return `.`, if `.` matched return `,`
    return m === ',' ? '.' : ',';
});

//ES6
mystring = mystring.replace(/[,.]/g, m => (m === ',' ? '.' : ','))

console.log(mystring);
document.write(mystring);




正则表达式:正则表达式[,.]将匹配逗号或小数点中的任何一个。

带有函数回调的

String#replace()将获得匹配作为参数(m),该参数可以是,.,并且使用从函数返回的值替换比赛。

因此,当字符串中的第一个,匹配时

m = ',';

在函数return m === ',' ? '.' : ',';

等同于

if (m === ',') {
    return '.';
} else {
    return ',';
}

所以,基本上这会将,替换为.,将.替换为字符串中的,

答案 1 :(得分:5)

Tushar的做法没有错,但这是另一个想法:

myString
  .replace(/,/g , "__COMMA__") // Replace `,` by some unique string
  .replace(/\./g, ',')         // Replace `.` by `,`
  .replace(/__COMMA__/g, '.'); // Replace the string by `.`