正则表达式与货币匹配,带或不带数千分隔符java
我想匹配有或没有任何千位分隔符和或小数的货币 字符串示例正则表达式与货币匹配,带或不带数千分隔符java,java,regex,string,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 + "]"); } 找到这个 但两者都不能满足我的需要。在使用regex101的Javascrpt中,我的示例似乎有
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 + "]");
}
找到这个
但两者都不能满足我的需要。在使用regex101的Javascrpt中,我的示例似乎有效
如何改进或更改正则表达式以满足上述要求
提前感谢。您的正则表达式匹配换行符(
\R
匹配Java 8正则表达式中的换行符)作为第一个符号
因此,修复看起来像
part.matches("R\\d*[.,\\s\\d*]+")
您可能希望尝试另一个更精确的正则表达式(但不允许使用空整数部分):
这里是你应该在
R
之前删除转义反斜杠。你能把它放在一个答案中吗?这样我就可以接受了。谢谢它的工作Edgreat将使用您的精确的一个^R(?:\\d{1,3}(?:[\\s,]\\d{3})+\\d+(:\\\.\\d+)$注意,对于String.matches
,您不需要添加^
和$
,因为默认情况下模式是锚定的(=需要完全的字符串匹配)。将这样修改它。我不知道。:)谢谢
"R(?:\\d{1,3}(?:[\\s,]\\d{3})+|\\d+)(?:\\.\\d+)?"