【问题标题】:RegEx for positive number + greater than zero an decimal (0.1)RegEx 正数 + 大于零的小数 (0.1)
【发布时间】:2013-10-28 05:55:53
【问题描述】:

我想验证 javascript 中的字段至少为 1,并且应该是正数或小数。

例子:

1
1.1
0.1
10.10

我当前的正则表达式如下所示:

var _RegEx = /^[+]?([0-9]+(?:[\.][0-9]*)?|\.[0-9]+)$/;

【问题讨论】:

  • +val > 0 怎么样?
  • 还需要isFinite(val) 假设Infinity 应该被禁止。

标签: javascript jquery regex


【解决方案1】:

简单:

 /^\+?(\d*[1-9]\d*\.?|\d*\.\d*[1-9]\d*)$/.test(x)

更简单:

0 < parseInt(x, 10) && parseInt(x, 10) < Infinity

最简单的:

0 < +x && +x < Infinity && !/[^\d.+]/.test(x)

感谢 Jack,最后一个不再那么简单了。 :/

【讨论】:

  • 出了点问题:SyntaxError: Invalid regular expression: /^+?([0-9]+(?:[.][0-9]*)?|.[0-9]+)$/: Nothing to repeat
  • 已修复。需要转义文字 +。
  • 请注意,'0xff' 在“最简单的情况”下会“工作”,但在其他两种情况下不会:)
【解决方案2】:
^\+?(\d*[1-9]\d*(\.\d*[1-9]\d*)?)$

要匹配的正则表达式:

  1. 任何大于零的数字
  2. 带或不带十进制数
  3. 如果未插入数字后跟 (.) 则不匹配

【讨论】:

  • 这与0.1 不匹配,但应该根据 OP。
【解决方案3】:
^((0?0?\.([1-9]\d*|0[1-9]\d*))|(([1-9]|0[1-9])\d*(\.\d+)?))$

12.34
00.34
0.34
109.341
0.00 (not matched)
.9
9
09
0 (not matched)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    相关资源
    最近更新 更多