我有一个正则表达式:
"(\\d+\\.\\,?)+"
值:
3.053,500
但是我的正则表达式模式不匹配。 我想有一个验证数字,点和逗号的模式。 对于有效的示例值:
1
12
1,2
1.2
1,23,456
1,23.456
1.234,567
etc.
答案 0 :(得分:2)
您的(\d+\.\,?)+
正则表达式匹配1个或多个1个以上数字,一个点和一个可选,
的重复。这意味着字符串必须以点结尾。 3.053,500
不能以点结尾。
您可以使用
s.matches("\\d+(?:[.,]\\d+)*")
请参见regex demo
请注意,在Java的^
方法中,$
和.matches()
锚点不是必需的,因为匹配项会自动锚定到字符串的开头/结尾。在regex101.com,定位符用于匹配行的开始/结束(因为演示是针对多行字符串运行的)。
模式详细信息
\d+
-1个以上数字(?:
-一个非捕获组的开始:
[.,]
-点或,
\d+
-1个以上数字)*
-重复0次或更多。