Javascript 正则表达式和替换字符串

Javascript 正则表达式和替换字符串,javascript,regex,Javascript,Regex,我试图格式化我的值,只接受数字,也用点替换逗号,但我无法用点替换逗号 例如: "4,82 €".replace(/[^\d\,]/g, '') 预计价值: 4.82试试这个:“4,82欧元”。替换(/[^0-9,]/g.)。替换(/,/g.) 此外,您不需要转义,。它在正则表达式中没有保留的含义,请尝试通过两个单独的表达式来处理它,一个用于删除,另一个用于执行替换: 删除所有非数字和逗号 将所有逗号替换为句点 这可能类似于下面的表达式: // Replaces all non-digits

我试图格式化我的值,只接受数字,也用点替换逗号,但我无法用点替换逗号

例如:

"4,82 €".replace(/[^\d\,]/g, '')
预计价值:
4.82试试这个:
“4,82欧元”。替换(/[^0-9,]/g.)。替换(/,/g.)


此外,您不需要转义
。它在正则表达式中没有保留的含义,请尝试通过两个单独的表达式来处理它,一个用于删除,另一个用于执行替换:

  • 删除所有非数字和逗号
  • 将所有逗号替换为句点
这可能类似于下面的表达式:

// Replaces all non-digits and commas /[^\d,]/ and replaces commas /,/
input.replace(/[^\d,]/g, '').replace(/,/g,'.`');
示例

//替换任何非数字或逗号,然后用句点替换逗号
console.log(“4,82欧元->”+“4,82欧元”。替换(/[^\d\,]/g')。替换(/,/g'))
//如果您希望最初允许句点,则不要删除它们

console.log(“4.82欧元->”+“4.82欧元”)。replace(/[^\d\,.]/g',)。replace(/,/g',)
你几乎是对的,只是错过了一件小事

你的正则表达式

[^\d\,]

将仅替换一个非数字或逗号字符,而不是全部

将正则表达式更改为

[^\d\,]+

像这样

“4,82欧元”。替换(/[^\d\,]+/g')


当然,它不会用点替换它,因为代码中没有点。你的正则表达式匹配所有不是数字或逗号的东西,所以你用零替换了`€`。但是用
替换
在哪里呢?
4,82€“。替换(/[^\d\,]+/g')。替换(/,/,')。
如果用户插入一个点而不是逗号,那么问题将是删除点。如果您希望这样做,那么您可以在第一次替换中处理:
输入。替换(/[^\d,.]/g')。替换(/,/g,“.
”);`。基本上在第一次删除时忽略替换周期,然后像往常一样进行替换。我也添加了一个示例来演示这种方法。但是,如果您放置“6,42”。替换(/[^\d,.]/g,)。替换(/,/g,“。”),则输出为“6.2”“,是删除小数。我的评论中有一个输入错误。第二个替换不需要如示例所示包含
字符。此外,如果要包含该字符,则需要将其放置在字符组中(即
[,.]
)否则,它将被视为通用字符,并与所有字符匹配。您可能需要
“6,42”。替换(/[^\d,]/g')。替换(/,/g'))