【问题标题】:Numeric Values only [duplicate]仅限数值[重复]
【发布时间】:2012-01-11 14:50:58
【问题描述】:

可能重复:
Numeric validation with RegExp to prevent invalid user input

我是正则表达式的新手。 请帮助仅为数值编写模式(适用于 JavaScript)。

  1. 仅限数值。
  2. 允许十进制“.”
  3. 没有逗号。

谢谢!

【问题讨论】:

  • 您是否尝试匹配十进制数字或 IP 地址(如数字和句点序列)?
  • @anubhava 它匹配一个空字符串。
  • 小数点前是否允许没有数字?是否允许有前导零,例如0001?你的要求还不够。我们喜欢帮助编写正则表达式,但您的问题更多的是“为我编写正则表达式”
  • 你可以看看你是否从parseFloat 中得到一个有效的号码?当然它会从“34.4134asd" (34.4134) 中得到一个有效的数字,但这有关系吗?
  • 以后,请编辑新信息您的原始问题,请不要在new post 中询问相同问题的数量。问题重复确实在我们的网站上得到了好评。谢谢。

标签: javascript regex


【解决方案1】:

这是一个great resource,用于在 JavaScript 中使用各种正则表达式。您的特定表达式如下所示:

/^[-+]?[0-9]+(\.[0-9]+)?$/

【讨论】:

  • 谢谢!如果我需要允许一个逗号并且数字只能是正数,我将如何更新正则表达式?
  • @ihtus 可能会这样做:/^[0-9]+(,[0-9]+)?(\.[0-9]+)?$/
【解决方案2】:

使用这个正则表达式:

^\d+(\.\d+)?$

【讨论】:

  • @anubhava,问题没有说明它是否有效......
  • 问题没有说清楚,但.28.15 确实都是有效的数值。
  • @anubhava,这取决于 UI 设计、业务逻辑等。你会读心术吗?
  • 不,先生,这与任何人的想法无关。根据算术,.28.59-.5.15 都是有效的数值。
  • @anubhava, 0.28 like .28 like 0x10 只是数字的字符串表示形式。
【解决方案3】:

我建议不要使用正则表达式并处理浮点数的所有排列,而是建议使用以下代码来检查它是否是有效的浮点数:

var s = ".45";
var d = parseFloat(s);
if (!isNaN(d))
   alert("valid float: " + d);

如果你必须有一个正则表达式,那么我建议:

/^[-+]?(?=.)\d*(?:\.\d+)?$/

【讨论】:

  • 谢谢!如果我需要允许一个逗号并且数字只能是正数,我将如何更新正则表达式?
  • 为此,您可以简单地使用:/^\+?(?=.)(?:\d+,)?\d*(?:\.\d+)?$/
【解决方案4】:

查看此处的示例以获取浮点数正则表达式示例...

http://www.regular-expressions.info/floatingpoint.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多