需要正确的价格正则表达式(Java) - 我的工作不起作用

时间:2012-12-23 18:21:57

标签: java regex

我正在尝试制作一个正则表达式,检查是否有价格。我不擅长正则表达式,这个给我一个正则表达式语法错误。它应检查输入是否为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;
}

2 个答案:

答案 0 :(得分:1)

关于你的正则表达式的错误信息:

  1. [0-1] - >这会分隔01,您需要使用\d来分隔每个数字。
  2. {0-2} - >这是不正确的,您需要使用,代替-
  3. 其余的我认为没问题。

答案 1 :(得分:0)

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