【问题标题】:Validate input with only number and decimal after dot验证点后仅包含数字和小数的输入
【发布时间】:2019-04-17 20:31:17
【问题描述】:

我正在尝试进行必须接受最多 3 个字段的十进制数字的验证。逗号只有在您输入了至少一个数字时才会出现

Allow:
100,000
1,0
1
1,00


Doesn't Allow:
,00
,150
,0
100 100

我试过了(我用React来获取输入值):

var code = (event.which) ? event.which : event.keyCode;
if (code !== 46 && (code < 48 || code > 57)) {
   event.preventDefault();
}

到目前为止,我已经设法仅限制字段和要点。但是,它仍然允许.000,并且不限于小数点后三位。

我该怎么做?

-------------- 更新解决方案 --------------

我发现 this answer 解决了我的问题。非常感谢你们的帮助

【问题讨论】:

  • 验证整个值,不要验证单个按键。如果用户在按键之间移动光标会发生什么?
  • 您的解决方案不是正则表达式。您应该专门要求一个或删除 [regex] 标签。
  • 十进制数最多包含 3 个字段是什么意思?是逗号后面的3位数还是别的什么?

标签: javascript regex reactjs validation


【解决方案1】:

我不确定我是否理解您的问题(我可以根据您的输入更新我的解决方案),但我认为您需要一个正则表达式来匹配您的整体价值,而不是单个输入:

function is_valid(value) {
  var exp = /^\d+(,*\d+)?$/;
  return exp.test(value)
}

tests = ["100,000", "1,0", "1", "1,00", ",00", ",150", ",0", "100 100"]

for(var i=0; i<tests.length; i++) {
  console.log(tests[i], is_valid(tests[i]))
}

【讨论】:

  • 我找到了解决方案(我更新了我的问题)。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2019-12-02
  • 2012-12-19
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多