限制文本框使用正则表达式

时间:2012-04-26 13:13:38

标签: java regex

我正在尝试验证文本框,我希望用户只能在0.1和4.0之间输入,我正在使用以下正则表达式

^[0-4](\.[0-9]+)?$
事情是甚至接受4.1等等直到4.9

有关我如何解决此问题的任何想法

由于

1 个答案:

答案 0 :(得分:4)

试试这个

^(?:[0-3](?:\.[0-9]+)?|4(?:\.0)?)$

修改

我添加了非捕获组。

正如Cyprus所问,这里有一个解释: 我将原始正则表达式限制为3.9并为4(.0)

添加了另一个条件
NODE                     EXPLANATION
  ^                        //the beginning of the string
  (?:                      //group, but do not capture:
    [0-3]                  //any character of: '0' to '3'
    (?:                    //group, but do not capture (optional):
      \.                   //'.'
      [0-9]+               //any character of: '0' to '9' (1 or more times)
    )?                     //end of grouping
   |                       //OR
    4                      //'4'
    (?:                    //group, but do not capture (optional):
      \.                   //'.'
      0                    //'0'
    )?                     //end of grouping
  )                        //end of grouping
  $                        //before an optional \n, and the end of the string