用正则表达式替换数据,我的正则表达式不起作用-JavaScript

用正则表达式替换数据,我的正则表达式不起作用-JavaScript,javascript,regex,Javascript,Regex,我需要用下一种方式替换文本 如果文本包含字母,则应替换为空 如果文本包含逗号,则应替换为点 如果文本包含点,则应替换为空 我创造了下一个 const a= 'C$ 8.572.121.247,04'; a.replace("C$","").split(".").join('').split(",").join('.') const a= 'C$ 8.572.121.247,04'; a.replace("C$","").split(".").join('').split(",").join('

我需要用下一种方式替换文本

如果文本包含字母,则应替换为空

如果文本包含逗号,则应替换为点

如果文本包含点,则应替换为空

我创造了下一个

const a= 'C$ 8.572.121.247,04';
a.replace("C$","").split(".").join('').split(",").join('.')
const a= 'C$ 8.572.121.247,04';
a.replace("C$","").split(".").join('').split(",").join('.')
结果就是下一个

8572121247.04

我需要用下一种方式替换文本

如果文本包含字母,则应替换为空

如果文本包含逗号,则应替换为点

如果文本包含点,则应替换为空

我创造了下一个

const a= 'C$ 8.572.121.247,04';
a.replace("C$","").split(".").join('').split(",").join('.')
const a= 'C$ 8.572.121.247,04';
a.replace("C$","").split(".").join('').split(",").join('.')
结果就是下一个

8572121247.04

但是我认为这不是更好的方法,因为它取代了很多次,也可以说是更好,但我还没有找到

的方式。 有人可以帮我优化代码


您可以使用更紧凑的
replace
方法

const a='C$8.572.121.247,04';

console.log(a.replace(/[^0-9,]/ig')。replace(/,/ig')另一个选项是使用替代项
[^0-9,]|(,)
,并使用replace with callback函数检查组1的值

const a='C$8.572.121.247,04';

console.log(a.replace(/[^0-9,]|(,)/g,(|,g1)=>g1?”。“:”)必须使用两个替换,也可以使用一个替换?这与Java有什么关系?因为代码使用的是typescript