我有String val
'6 000,00'。
我需要检查是否有空格和逗号。
目前我使用
String pattern = "([-+]?[0-9]*,?[0-9]+)";
if(val.matches(pattern)) {
paraNew.setAlignment(ParagraphAlignment.RIGHT);
System.out.println("[Server - addDocxTableData() - Align RIGHT secondary]");
}
但它在空白上失败了。任何人都可以改进上述模式吗?
P.S。我试过"([-+]?[0-9]*,?[0-9]+[:space])"
它不起作用。
答案 0 :(得分:1)
如果我理解正确,这应该为你做到:
^([-+]?\d{1,3}(?: \d{3})*(?:,[0-9]+)?)$
它允许整数部分是任意数量的三位数组,空格分隔。 (第一组可以是1-3位。)这可以选择后跟一个带有1位或更多位的小数部分。
答案 1 :(得分:1)
这个正则表达式
^[-+]?[0-9]{1,3}(?:[ ][0-9]{3})*(?:[,][0-9]+)?$
将匹配
+1 123,12
-123 456 789,12456
12 345
但不会匹配
+1123,12
-123456789,123
-1234 56,123
12345
答案 2 :(得分:0)
您需要此正则表达式:^.*( .*,|,.* ).*$
说明:
.*,
,.*
(...|...)
String.matches()
。这会尝试匹配完整的字符串。这就是为什么我们需要.*
到模式的开头和结尾。您可以使用此here。
答案 3 :(得分:0)
所以你的正则表达式会找到这个
1,111
+1,111
-1,111
1111
你的正则表达式无效,因为你没有检查空间。
([-+]?([0-9]*/s?)*,?[0-9]+)