繁体   English   中英

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

[英]Java check string for comma and space

我有一个String val 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]");
}

但是它在空白处失败。 任何人都可以改善上述模式吗?

PS我尝试了"([-+]?[0-9]*,?[0-9]+[:space])"但是它没有用。

如果我对您的理解正确,这应该为您做到:

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

它允许整数部分为任意数目的三位数字组,以空格分隔。 (第一组可以是1-3位数字。)可以选择在其后跟随一个具有1个或多个数字的小数部分。

在regex101上看到它

这个正则表达式

^[-+]?[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

这个怎么样:

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

如果数字每3个字符后有一个空格(千个旁观者),则验证数字。 如果它带有逗号(,),请确保在逗号后有数字。

Regex101演示

效劳于:

6 000,00
9 000 000,50
3 000 000
630 000 000 000
940 000 000 000 000
-9 000 000 000 000 000 000

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

说明:

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

你可以在这里玩。

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

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

您的正则表达式无法正常工作,因为您没有检查空间。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM