仅与数字,点和逗号匹配的值

时间:2019-02-15 14:34:23

标签: java regex

我有一个正则表达式:

"(\\d+\\.\\,?)+"

值:

3.053,500

但是我的正则表达式模式不匹配。 我想有一个验证数字,点和逗号的模式。 对于有效的示例值:

1
12
1,2
1.2
1,23,456
1,23.456
1.234,567
etc.

1 个答案:

答案 0 :(得分:2)

您的(\d+\.\,?)+正则表达式匹配1个或多个1个以上数字,一个点和一个可选,的重复。这意味着字符串必须以点结尾。 3.053,500不能以点结尾。

您可以使用

s.matches("\\d+(?:[.,]\\d+)*")

请参见regex demo

请注意,在Java的^方法中,$.matches()锚点不是必需的,因为匹配项会自动锚定到字符串的开头/结尾。在regex101.com,定位符用于匹配行的开始/结束(因为演示是针对多行字符串运行的)。

模式详细信息

  • \d+-1个以上数字
  • (?:-一个非捕获组的开始:
    • [.,]-点或,
    • \d+-1个以上数字
  • )*-重复0次或更多。