防止多个小数点

时间:2011-08-30 17:55:00

标签: regex decimal

我不是计算机科学人,我正在试图弄清楚如何防止用户输入多个小数点。例如,如何阻止某人输入3..5?

3 个答案:

答案 0 :(得分:1)

问题中给出的背景几乎不存在,但正确的方法是尝试使用您正在使用的任何语言解析输入,如果失败,则拒绝它。但如果你想要一个正则表达式:

^\d+\.\d+$    # allows numbers with a single decimal point; 
                fails if it doesn't have one
^\d+(\.\d+)?$ # allows numbers with a decimal point or without one

请注意,这些正则表达式允许小数点两边的数字位数不受限制。如果您想指定位数,可以使用{m...n}代替+量词:

^\d{1,3}\.\d{1,3}$   # allows numbers from 0.0 to 999.999

编辑:如果你想允许像tchrist建议的那样输入.25形式,你可以使用:

^\d*\.\d+?$ 

答案 1 :(得分:0)

对于浮点数,即###。##,您可以匹配

^[0-9]+[.]{1}[0-9]{1,2}$

这将允许任意数量的数字,后跟一个小数(必填),后跟一个或两个数字。

答案 2 :(得分:0)

试试这个:

m{
    ^ (?: \. \d{1,2}   # eg: ".25"
        | \d+          # eg: "2343409823409823049823094823094820389402984230948"
              (?:
                  \. \d{0,2}
              )?       #  eg: "186282.42"
      ) 
    $
}x