2013-06-05 8 views
5

これは整数を検証するためのソリューションです。誰かKarim's answerの論理を説明してください。
これは完全に動作しますが、私はどのように理解できません。正規表現のリファレンス文字列の検証javascriptで文字列が負ではない

var intRegex = /^\d+$/; 
if(intRegex.test(someNumber)) { 
    alert('I am an int'); 
    ... 
} 
+1

私はこの質問がその答えに対するコメントであるべきだと思っています。そして、@ Karim自身が答えなければなりません。 – Bergi

+1

このコードは完全に正しいわけではありません。例えば、 '000 ...(10,000 times).. 000'のような文字列を検証します。これはほとんど「数字」ではありません。 – georg

答えて

11

正規表現:/^\d+$/彼らはすべて組み合わされて

^ // beginning of the string 
\d // numeric char [0-9] 
+ // 1 or more from the last 
$ // ends of the string 

:文字列の先頭から

最後に1つ以上の数字char [0-9]と数字だけがあります。

-1

この正規表現は良いかもしれ/^[1-9]+\d*$/

^  // beginning of the string 
[1-9] // numeric char [1-9] 
+  // 1 or more occurrence of the prior 
\d // numeric char [0-9] 
*  // 0 or more occurrences of the prior 
$  // end of the string 

も非負の整数である何ゼロ

+1

これは '0'で失敗します。 –

0

で事前に埋められている非負整数に対してテストでしょうか?

非負の整数は、「0または正の整数」です。

出典:つまりhttp://mathworld.wolfram.com/NonnegativeInteger.html

、あなたは非負の整数を検証するために探しています。

-0-0000などの整数が含まれていないため、上記の回答は不十分です。技術的には解析後に非負の整数になります。他の答えは、正面に+の整数を検証しません。説明

/^(\+?\d+|-?0+)$/ 

Try it Online!

^     # Beginning of String 
    (    # Capturing Group 
      \+?  # Optional '+' Sign 
      \d+  # One or More Digits (0 - 9) 
     |   # OR 
      -?  # Optional '-' Sign 
      0+  # One or More 0 Digits 
    )    # End Capturing Group 
$     # End of String 

次のテストケースがtrueを返す:

あなたは、検証のために、次の正規表現を使用することができます-0-0000000000+0+0000112345+1+1234である。 次のテストケースはfalseを返します。-12.3,123.4,-1234-1

注:この正規表現は、科学記法で書かれた整数文字列では機能しません。

関連する問題