用空白替换这些字符中的任何一个:''。

4
somevar = ' 150,00 $';
someothervar = '$25.0;

我希望能够去掉美元符号、空格、逗号或点号等内容。

尝试了 somevar.replace(/('$'|' '|,|\.)/g,'');,返回结果是 15000 $(前面有一个空格)。

看起来逗号被去掉了,但其他的还在?

我可以像这样操作:

somevar.replace(/\$/g,'').replace(/ /g,'').replace(/,/g,'')

但是肯定有更加“优雅”的方式吧?

预期输出是什么?150,00 $ -> 150 还是 15000 - Wiktor Stribiżew
你确定点和逗号都是正确的吗? - RobertoNovelo
/\D/g 是最好的方法,但要小心,如果你偶然从响应中删除小数点... ;) - Roko C. Buljan
2个回答

2
您可以使用/[$,.\s]/g
' 150,00 $'.replace(/[$,.\s]/g, '');
// "15000"

'$25.0'.replace(/[$,.\s]/g, '');
// "250"

你的正则表达式没有起作用是因为你需要转义 $ 字符并删除单引号。你可以使用: /\$| |,|\./g

另外,你也可以使用 /\D/g 替换所有非数字字符。

' 150,00 $'.replace(/\D/g, '');
// "15000"

'$25.0'.replace(/\D/g, '');
// "250"

“/\D/g” 这个建议是 Roberto 在你之前发布的。 - Wiktor Stribiżew
@stribizhev 我比他早回答了大约3分钟。在看到你的评论之前,我甚至没有看到他的回答。你是在建议我删除那个回答吗? - Josh Crozier
1
"..因为您需要转义$字符" - 或许可以解释一下为什么不需要? - Jongware
谢谢你的回答,它真正澄清了事情,并且在书面上听起来/看起来很明显。 - Doug Fir

2

我会:

var somePriceString = "$$2.903.5,,,3787.3";

console.log(somePriceString.replace(/\D/g,''));

如果我想要移除任何非数字字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接