【问题标题】:Swing JTextField - Max 3 digits before decimal and max 2 digits after decimalSwing JTextField - 小数点前最多 3 位,小数点后最多 2 位
【发布时间】:2015-05-19 09:22:50
【问题描述】:

谁能帮我验证JTextField,它最多只能允许小数点前3位和小数点后2位?

我将正则表达式 \\d{3}\\.\\d{2} 用于 InputVerifier。这允许在小数点前后正好有 3 和 2。我需要小数点前后的<=3 和<=2。

我的项目只需要 JTextField。

【问题讨论】:

  • 您的标签列表应包含regex。根据this question,可以使用\d{1,2,3}.\d{1,2}。
  • ^\d{1,3}\.\d{1,2}$ 适合您吗?它将要求小数点两边至少有 1 位,第一部分可以是 1 到 3 位,第二部分可以是 1 到 2 位。要允许.2 喜欢输入,请尝试^\d{0,3}\.\d{1,2}$。
  • “我的项目只需要 JTextField。” 为什么?事实上,这看起来很像 JFormattedTextField 的案例。
  • @stribizhev 是的 '^\d{0,3}\.\d{1,2}$' 正在工作....
  • @Kaushi:太好了,我在帖子中添加了答案。

标签: java regex swing jtextfield


【解决方案1】:

要验证此类字符串,您可以使用以下正则表达式:

^\d{0,3}\.\d{1,2}$

它要求小数点右侧至少有 1 位数字,并且第一部分的长度可以是 0 到 3 位数字(由于{0,3} 量词)。

注意它允许.2-like 输入。

【讨论】:

  • 通过使用InputVerifier,在输入小数点前第4位并从'verify'方法获取返回值后为false。但我的查询是,在输入小数点前 3 位数字后,我应该无法输入任何数字。小数点后的数字也是如此。有什么办法吗??????
  • 你应该查看官方InputVerifier documentation here。要设置此检查,您需要将tf1.setInputVerifier(new PassVerifier()); 设置为JTextField 并在PassVerifier 内,根据正则表达式检查tf.getText()。我希望现在更清楚了。
猜你喜欢
  • 1970-01-01
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多