0

如果一个数字是千位分隔的(例如用点),我如何使用 Java 中的正则表达式进行验证?

当然它不必接受任何负数。我已经到处搜索了,到目前为止,我发现最好的是[1-9]?\.[0-9]*. 然而,它并不完美。例如,它接受1.000000000不正确的。

如何使用点千分隔符验证正数?例如数字:1.024.553100.000

它应该接受:

  • 123
  • 123.123
  • 0
  • 12.111

但不是:

  • 00
  • kukac
  • 0.111
  • 1...1
  • 1.1
4

1 回答 1

3

你可以使用这种模式:

^\d+|\d{1,3}(?:\.\d{3})*$

这将匹配任何没有千位分隔符的简单数字序列,或任何.每 3 位数字之间有分隔符的序列。如果您还想支持逗号作为千位分隔符,请使用以下命令:

^\d+|\d{1,3}(?:[,.]\d{3})*$

当然,要在 Java 中使用任何这些,您需要对\字符进行转义:

String pattern = "^\\d+|\\d{1,3}(?:\\.\\d{3})*$";

更新鉴于您更新的规格,我推荐这种模式:

^(?:0|[1-9][0-9]{0,2}(?:\.[0-9]{3})*)$

你可以在这里测试它:Regex Tester

于 2013-07-15T11:33:23.037 回答