正则表达式以匹配给定格式的字符串之外的任何字符



我想在replace()中使用正则表达式来格式化货币输入,小数点前有可选的数字长度,小数点后只有一位或两位数字。

基本上,它应该匹配这样的9999999,00或这个9999999.00而不是这个9999999,000

我有以下正则表达式:

value.replace(/[^d*((.|,)d(d)?)?$]/, "")

但它不起作用,因为它允许以任何顺序而不是给定格式.,数字。

我可以将此字符串^d*((.|,)d(d)?)?$放在方括号内[^]以匹配格式之外的任何字符吗?或者也许有另一种方法可以解决它?

编辑:我将react-final-formparse功能一起使用它,仅允许给定格式的输入并删除所有其他字符。这是我的代码和多克斯 https://codesandbox.io/s/react-final-form-simple-example-o9jub?fontsize=14

检查此模式:

^([1-9]d*|0?)([,.]d{2})?$

演示一些示例:这里

你的表达式中有几个错误:

  1. 我不确定您为什么在表达式中添加方括号[^...]- 方括号内的字符是单独处理的,而不是作为一个整体表达式处理的。
  2. 请注意,常规方括号(...)会将表达式的输出集中在方括号内的匹配字符串。

试试这个表达式:d+[.,]d{1,2}

  1. d+验证小数点前至少有 1 位数字。
  2. [.,]只是匹配不同字符的更好方法。
  3. d{1,2}小数点上方的 1 位或 2 位数字。

相关内容

  • 没有找到相关文章