需要帮助使用javascript验证具有特定长度的十进制数

时间:2011-12-21 18:10:13

标签: javascript html

需要在数字中显示的位数是预定义的,我需要一个正则表达式/函数来验证输入数字。

示例:如果length是(0,2)那么应该允许的数字如下:

0.0      --true,
0        -- true,
000.0000 - true,
0.2      --true,
0.200    --true,
1.2      -- false,
0.22     -- true,
0.02     -- true,
.2       -- true,
.99      -- true

如果长度是(2,2)那么应该允许的数字如下:

0.0      --true,
0        -- true,
000.0000 - true,
0.2      --true,
0.200    --true,
1.2      -- true,
0.22     -- true,
0.02     -- true,
.2       -- true,
.99      -- true,
12.21    -- true,
0099.3200-- true,
80.080   --true,
80.80    --true,
8.088    --false,
09.9     --true,
9.0      --true,
5        --true,
89       --true

等等。任何想法/建议/代码/帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

一种可能方法的大致概述:

  1. 验证数据以确保您使用的是数字或仅包含数字和句点的字符串。
  2. 将变量转换为字符串(x +''将x转换为字符串)
  3. 拆分期间的字符串。 (var array = x.split('。');
  4. 验证拆分数组长度是否大于2(如果大于2,则字符串中有多个。)
  5. 将每一半作为数字投射(x * 1将x作为数字投射)
  6. 确认每一半都小于(该半数的10 ^#)
  7. 如果4或6中的测试失败,则数字失败。否则,它就过去了。

答案 1 :(得分:0)

我通常会避免RegExp这样的事情,但是ab来自(a, b)的情况下,以下模式可能有用:

/^0*[0-9]{0,a}(?:\.[0-9]{0,b}0*)?$/

细分:

^ - beginning of string
0* - zero or more zeros
[0-9]{0,a} - 0 to a digits*
(?: - start of a non-capturing container
\. - a period character
[0-9]{0,b} - 0 to b digits*
0* - zero or more zeros
)? - 0 or 1 of the non-capturing containers
$ - end of the string

*(\d可用于代替[0-9],但我希望将这些字母保留为变量)

如果你想要动态数字,你需要从一个字符串构建你的RegEx,但如果它们是静态的,那么你可以对它进行硬编码:

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