【问题标题】:RegEx matcing numeric values with or without thousand separators正则表达式匹配带或不带千位分隔符的数值
【发布时间】:2011-06-06 15:45:03
【问题描述】:

我需要一个正则表达式来匹配以下内容:

1.234.567
-1.234.789
1234567
-1234567

不应该匹配:

.123     (leading separator)
123..456 (two separators)

换句话说,我需要一个正则表达式来匹配long 格式化的带有或不带千位分隔符的数值。

谢谢!

【问题讨论】:

  • 千位分隔符是否总是一个点。 ?
  • 听起来有点像家庭作业
  • 不,这不是家庭作业。我试图忽略来自 WPF 中 TextBox 的无效用户输入。

标签: regex


【解决方案1】:

这是一个更受限制的答案

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

在线查看here at Regexr

(?!0) 防止以 0 开头

\d+ 允许数字不带分隔符

\d{1,3}(?:.\d{3})+ 是分隔符的部分。从 1 到 3 个数字开始,然后是分隔符和 3 个数字。分隔符的点后跟 3 个数字可以重复。

【讨论】:

  • 谢谢! +1 用于提供更详细的描述。
【解决方案2】:

你可以这样做

^-?([0-9]{1,3}\.?)+$

RegExr Demo

【讨论】:

  • 谢谢!还有一个 +1 用于链接到带有示例的演示。
  • @Olav @bazmegakapa 你知道这也匹配 0.0.0and 1.23.451. 吗?
  • @stema 我是。对于客户端验证,这就足够了。你的当然更好,但对我来说有点矫枉过正。
  • 接受@stema 的回答,因为它涵盖了我正在寻找的更多内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 2019-05-28
  • 1970-01-01
相关资源
最近更新 更多