我希望匹配货币有或没有任何千位分隔符和/或小数。
字符串示例
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 separator和Python regex to match currency with or without comma or decimal
但两者都没有完成我需要的东西。在Javascrpt中使用regex101我的例子似乎工作https://regex101.com/r/rK2jMU/4
如何改进或更改我的正则表达式以满足上述要求?
提前致谢。
答案 0 :(得分:2)
你的正则表达式匹配换行符(\R
与Java 8正则表达式中的换行符匹配)作为第一个符号。
因此,修复程序看起来像
part.matches("R\\d*[.,\\s\\d*]+")
你可能想尝试另一个更精确的正则表达式(虽然不允许空整数部分):
"R(?:\\d{1,3}(?:[\\s,]\\d{3})+|\\d+)(?:\\.\\d+)?"