2011-07-06 43 views
2

こんにちは、この正規表現は正の数を受け取ります^ \ d + $これは何も受け入れません^ $ だから私はこの2つの正規表現を結合したいが、成功しない。私はこれを試しています(^ \ d + $)|(^ $)しかし、これはうまくいきません。正の整数を受け入れる正規表現

^\d*$ 

*手段:「0回以上」だから、正の整数であり、何も THX

+1

どの言語で正規表現を書いていますか? – borrible

+0

java:Pattern.compile(regexp) – hudi

答えて

11

は、単に行う多くのことを受け入れる正規表現で私を助けて。

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

これはたくさんのことです。 – hudi

+0

@hudi、よろしいですか? –

+0

しかし、これは複数のゼロ( "000")にマッチします。私はそれほどエレガントではない正規表現 '' 0 | [1-9] [0-9] * "'を使って世話をしました。 –

2

お試し^[0-9]*$これは数字と何も許さない。

1

^\d*$?それは、空白なしの行または空の行で、一連の数字(つまり、正の整数)を単独で受け入れることになります。