嗨我在互联网上发现这个正则表达式接受正数^ \ d + $并且这不接受^ $ 所以,不,我想结合这两个正则表达式,但没有成功。我试试这个(^ \ d + $)|(^ $)但这没有用。所以帮助我使用regexp接受正整数而不是任何东西 很多
答案 0 :(得分:11)
简单地说:
^\d*$
*
表示:“零次或多次”。
由于您已经使用Java标记询问了大多数问题,我假设您正在寻找Java解决方案。请注意,在字符串文字中,\
需要转义!
演示:
class Test {
public static void main(String[] args) {
String[] tests = {"-100", "", "2334", "0"};
for(String t : tests) {
System.out.println(t + " -> " + t.matches("\\d*"));
}
}
}
产生
-100 -> false
-> true
2334 -> true
0 -> true
请注意,matches(...)
已经验证了整个输入字符串,因此无需使用^
和$
“锚定”它。
请注意,对于超过Integer.MAX_VALUE
和Long.MAX_VALUE
的数字,它也会返回true。即使matches(...)
返回true,parseInt(...)
或parseLong(...)
也可能会引发异常!
答案 1 :(得分:2)
试试^[0-9]*$
。这个允许数字,没有。
答案 2 :(得分:1)
^\d*$
怎么样?这将在没有空格或空行的行中接受一系列数字(即正整数)。