【问题标题】:Javascript: Decimals still being allowed in regex check for numbers [duplicate]Javascript:在正则表达式检查数字时仍允许使用小数[重复]
【发布时间】:2020-02-10 15:29:24
【问题描述】:

我正在使用以下内容仅测试数字,但小数仍然通过测试 /^-{0,1}\d*\.{0,1}\d+$/.test(v) 时遇到问题。我是否错误地使用它来测试它?

【问题讨论】:

  • 你的正则表达式允许在这里使用小数 \.{0,1}
  • 那里有一个文字点... - 为什么这不接受带小数的数字?
  • 您的模式有\.{0,1}\d+,它允许小数点...为什么您希望他们无法通过测试?
  • 您可以使用? 而不是{0,1} 来简化您的正则表达式。向我们展示您的测试数据和预期结果。

标签: javascript regex


【解决方案1】:

如果您只想要整数,请使用:

/^-?\d+$/.test(v)

--- 解释

^ - 字符串的开始

-? - 开头的减号,? 表示可以但没必要

\d - 任何数字(包括零)

+ - 最后一个表达式(=任意数字)可以重复多次

$ - 字符串结尾

【讨论】:

  • 我更新答案,添加解释
  • [1-9]\d* 会阻止我只输入有效数字0
  • ^(?:0|-?[1-9]\d*)$ 会更合适。
  • 你是对的。还是像 /^-?(0|[1-9]\d*)$/.test(v) 这样更好,因为毕竟 -0 也应该是有效的
  • 但最后我认为任何类型的前导零都是有效的..尝试输入控制台var n = 0002parseInt('045')..
猜你喜欢
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 2021-07-26
  • 1970-01-01
  • 2015-02-20
相关资源
最近更新 更多