我有一个字符串,该字符串只能有由空格分隔的整数。例如:
1 2 3
4 5 6
9 8 7
1 p 3 // it should not pass
所以我的字符串中应该始终用空格将数字分隔开,因此这就是为什么我添加此正则表达式检查以验证字符串但不起作用的原因:
String line = "1 2 3"; // "1 p 3"
if(!line.matches("[ ]?\\d+")) {
//it should come here for "1 p 3" string
}
我的正则表达式怎么了?
答案 0 :(得分:2)
.matches
仅在 whole 字符串与正则表达式匹配的情况下才得出true
。 (您可能会认为它被^
和$
隐含地包围。)因此,要验证仅包含数字且字符串之间具有空格的字符串,请使用:
\d+(?: \d+)*
https://regex101.com/r/wK9WhP/1
请注意,不需要只包含单个字符的字符集-更容易将字符集完全省略。
String line = "1 2 3"; // "1 p 3"
if(line.matches("\\d+(?: \\d+)*")) {
System.out.println("match");
} else {
System.out.println("no match");
}