我正在尝试制作一个正则表达式,检查是否有价格。我不擅长正则表达式,这个给我一个正则表达式语法错误。它应检查输入是否为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;
}
答案 0 :(得分:1)
关于你的正则表达式的错误信息:
[0-1]
- >这会分隔0
或1
,您需要使用\d
来分隔每个数字。{0-2}
- >这是不正确的,您需要使用,
代替-
其余的我认为没问题。
答案 1 :(得分:0)
请尝试"^[0-9]*?(\\.)?[0-9]{0,2}$"
。