正则表达式为千位分开的数字

时间:2013-07-15 11:28:16

标签: java regex string

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

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

如何使用dot千位分隔符验证正数?例如,数字为:1.024.553100.000

它应该接受:

  • 123
  • 123.123
  • 0
  • 12.111

但不是:

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

1 个答案:

答案 0 :(得分: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