Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式与货币匹配,带或不带数千分隔符java_Java_Regex_String - Fatal编程技术网

正则表达式与货币匹配,带或不带数千分隔符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+)?"