何かが価格であるかどうかを確認する正規表現を作成しようとしています。私は正規表現が苦手で、正規表現の構文エラーが発生します。入力が 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;
}