-2

我正在尝试制作一个正则表达式,以检查某物是否是价格。我不擅长正则表达式,这个给我一个正则表达式语法错误。它应该检查输入是否类似于 13.3 或 0.1 或 .4 或 6 或 200 或 3.04,这些都可以解释为价格。我尝试使用 Double.valueOf(String),但是,这个方法接受像 3.00 这样的字符串,所以超过 2 个浮点数。

private boolean validateAndSet(JTextField tf) {
    boolean isDouble = true;
    try { 
        if (tf.getText().matches("^[0-1]*(\\.)?[0-1]{0-2}$"))   {
            item.setAlertPrice(Double.valueOf(tf.getText()));
            return true;
        }
        isDouble = false;
    } catch (NumberFormatException nfe) {
        isDouble = false;
    } finally {
        if (!isDouble) {
            System.out.println("Not a price;");
            tf.setText("0.00");
        }

    }
    return isDouble;
}
4

2 回答 2

1

关于您的正则表达式的错误之处:

  1. [0-1]-> 这分隔 a0或 a 1,您需要用来\d分隔每个数字。
  2. {0-2}-> 这是不正确的,你需要使用,而不是-

其他的我觉得还可以。

于 2012-12-23T18:26:50.730 回答
0

尝试"^[0-9]*?(\\.)?[0-9]{0,2}$",而不是。

于 2012-12-23T18:26:59.887 回答