正则表达式匹配货币有或没有千位分隔符java

时间:2016-12-21 11:00:09

标签: java regex string

我希望匹配货币有或没有任何千位分隔符和/或小数。

字符串示例

String part =  "R4,491.25"; // must be able to match more ex : R12,550,000.60

我有什么

if( part.matches("\\R\\d*[.,\\s\\d*]+")){
   System.out.println("C [" + part + "]");
}

找到此Regex for number with decimals and thousand separatorPython regex to match currency with or without comma or decimal

但两者都没有完成我需要的东西。在Javascrpt中使用regex101我的例子似乎工作https://regex101.com/r/rK2jMU/4

如何改进或更改我的正则表达式以满足上述要求?

提前致谢。

1 个答案:

答案 0 :(得分:2)

你的正则表达式匹配换行符(\R与Java 8正则表达式中的换行符匹配)作为第一个符号。

因此,修复程序看起来像

part.matches("R\\d*[.,\\s\\d*]+")

你可能想尝试另一个更精确的正则表达式(虽然不允许空整数部分):

"R(?:\\d{1,3}(?:[\\s,]\\d{3})+|\\d+)(?:\\.\\d+)?"

这是this regex demo fiddle