-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 に答える