正则表达式检查1-10的增量为.5?

时间:2013-12-06 03:54:27

标签: java regex

我必须创建一个只允许1-10范围内的用户输入的正则表达式 并且仅以.5

的增量

基本上只允许1 - 1.5 - 2 - 2.5 - 3 - 3.5 - 4 - 4.5 - 5 ... 9.5 - 10

我会尝试用另一种方法来做到这一点,但在这种情况下,我必须在我的程序中使用正则表达式。

到目前为止,我已经尝试过这个:

"^[1-10](.5)?$"

还有这个:

"^[1-9](.5)?[10]$"

和此:

"^[1-9](.5)?|[10]$" 

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

使用以下正则表达式:

"^[1-9](\\.5)?|10$"
  • .应该转义为字面匹配一个点。
  • 反斜杠本身应该被转义。 (这是一个java字符串文字)。

答案 1 :(得分:2)

10|[1-9](?:\.5)?

1019之后的数字,可选地后跟.5

如果您希望它拒绝子字符串匹配,请在^...$之间。

(鉴于它是Java,记得逃避字符串中的反斜杠!)

答案 2 :(得分:0)

没有正则表达式的替代解决方案:

public static void main(String[] args) {
    List<Double> list = new ArrayList<Double>() {
        {
            add(1.0);
            add(1.5);
            add(2.5);
            add(9.5);
            add(2.3);
            add(7.1);
            add(10.0);
        }
    };

    for (Double value : list) {
        if (value % 1 == 0 || (value - 0.5) % 1 == 0) {
            System.out.println(value);
        }
    }
}

输出:

1.0
1.5
2.5
9.5
10.0

答案 3 :(得分:0)

我认为你很亲密。考虑对你的正则表达式进行以下微小改动......

^[1-9](\.5)?$|^10$

G0od Luck!