用于逗号和空格的Java检查字符串

时间:2017-05-12 08:31:14

标签: java regex

我有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])"它不起作用。

4 个答案:

答案 0 :(得分:1)

如果我理解正确,这应该为你做到:

^([-+]?\d{1,3}(?: \d{3})*(?:,[0-9]+)?)$

它允许整数部分是任意数量的三位数组,空格分隔。 (第一组可以是1-3位。)这可以选择后跟一个带有1位或更多位的小数部分。

See it here at regex101

答案 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)

您需要此正则表达式:^.*( .*,|,.* ).*$

说明:

  • 选项1:首先是空格,然后是逗号。它们之间可以有任何内容:.*,
  • 选项2:首先是逗号,然后是空格。它们之间可以有任何内容:,.*
  • 确保一个或另一个匹配:(...|...)
  • 您正在使用String.matches()。这会尝试匹配完整的字符串。这就是为什么我们需要.*到模式的开头和结尾。

您可以使用此here

答案 3 :(得分:0)

所以你的正则表达式会找到这个

1,111
+1,111
-1,111
1111

你的正则表达式无效,因为你没有检查空间。

([-+]?([0-9]*/s?)*,?[0-9]+)