2011-07-06 44 views
2

嗨我在互联网上发现,这个正则表达式接受正数^ \ D + $,这不接受任何^ $ 所以没有我想结合这两个正则表达式,但没有成功。我试试这个(^ \ d + $)|(^ $),但这没有奏效。所以帮我正则表达式,其接受正整数,并没有什么 THX很多正则表达式接受正整数和什么都没有

+1

针对哪种语言编写正则表达式? – borrible

+0

java:Pattern.compile(regexp) – hudi

回答

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_VALUELong.MAX_VALUE的数字,它也会返回true。所以即使matches(...)返回true,parseInt(...)parseLong(...)可能会抛出异常!

+0

yae它的工作原理很多 – hudi

+0

@hudi,不客气。 –

+0

虽然这匹配多个零(“000”)。我使用了不那么优雅的正则表达式''0 | [1-9] [0-9] *“'来处理这个问题。 –

2

尝试^[0-9]*$。这一个允许数字,什么也不是。

1

^\d*$怎么样?这将接受一行数字(即一个正整数)本身在一行没有空白或空行。

相关问题