使用正则表达式验证负数和正数的十进制数

9

我正在尝试构建一个正则表达式,使其可以允许以下规则的负数和正数的十进制数。

  1. 小数点后不能超过2位
  2. 小数点是可选的
  3. 总长度(包括小数点)不应超过12个字符
  4. 如果没有小数点,则最大长度不应超过9个字符

有人能帮忙吗?非常感谢。


减号会计入字符串中吗?如果有超过两个小数位,但都是0,会怎样呢? - Qantas 94 Heavy
不,负数不会在12的限制范围内计算。即使是0,也不允许超过2个小数位。谢谢 :-) - Manas Saha
可能是Javascript正则表达式匹配负数和小数点的重复问题。 - jww
5个回答

21

检查这个正则表达式。

^[+-]?[0-9]{1,9}(?:\.[0-9]{1,2})?$

这个正则表达式的含义为:

  • 符号是可选的
  • 整数部分至少有1个数字,最多9个数字
  • 如果有小数点,则小数点后至少有1个数字,最多2个数字。

这个链接帮助我编写和测试这个正则表达式:http://erik.eae.net/playground/regexp/regexp.html - Bilal Mirza
你能推荐一些关于正则表达式的好教程吗? - muneebShabbir
1
测试针对输入 1-2 失败。 - sudhir

3

这很简单,因为对于两个小数加上小数点,12-9==3。

var re = new RegExp('^-?\\d{1,9}(\\.\\d{1,2})?$');

授权

  • -123456789
  • -123456789.1
  • -123456789.12
  • 0
  • 0.12

但不接受以下内容

  • 01234567890123 超过12位小数
  • 123. 没有小数点
  • 123.123 超过两位小数
  • . 或者 .12 (缺少 0)

我认为你在正则表达式中漏了双反斜杠。 - Qantas 94 Heavy
谢谢,但它接受的总字符数大于12个,例如12345678912.00。 - Manas Saha
@ManasSaha 已修复(拼写错误),只要“-”不计入限制即可。 - Déjà vu

1

我的正则表达式:

var rgx = /^(-{1}?(?:([0-9]{0,10}))|([0-9]{1})?(?:([0-9]{0,9})))?(?:\.([0-9]{0,3}))?$/;

0
var NumberToValidate = 48428;
        var valid =  /^([0-9]*[1-9][0-9]*)$/.test(NumberToValidate);
        {
        if (!valid)
    alert("Invalid Quantity!!\nThe Quantity cannot be Zero\n or a part of a Unit !");
            return false;
        }

-1

enter image description here

/(?:^(?:(?:[1-9][0-9]{1,})|0)\.[0-9]{1,}$)|^[1-9]+[0-9]*$/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接