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'))
。