2013-06-05 16 views
5

Jest to rozwiązanie do sprawdzania poprawności liczby całkowitej. Czy ktoś może wyjaśnić logikę Karim's answer.
Działa to doskonale, ale nie jestem w stanie zrozumieć, w jaki sposób.sprawdzanie poprawności ciągu jest nieujemną liczbą całkowitą w javascript

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

Myślę, że to pytanie powinno być lepszym komentarzem do tej odpowiedzi ... i powinien tam odpowiadać sam @ Karim. – Bergi

+1

Należy zauważyć, że ten kod nie jest całkowicie poprawny. Na przykład sprawdza poprawność łańcucha takiego jak '000 ... (10 000 razy) .. 000', który nie jest" liczbą ". – georg

Odpowiedz

11

regex: /^\d+$/

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

gdy wszystkie są połączone:

Od początku łańcucha do na końcu znajduje się jeden lub więcej numerów char [0-9] i tylko numer.

-1

Ten regex może być lepiej /^[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 

będzie również próba przed nieujemnych liczb całkowitych, które są wstępnie wyściełane zerami

+1

To zawiedzie na "0". –

0

Co jest nieujemną Ogólna liczba?

Nieujemna liczba całkowita to "liczba całkowita, która ma wartość 0 lub dodatnią."

Źródło: http://mathworld.wolfram.com/NonnegativeInteger.html

Innymi słowy, szukasz walidacji nieujemną liczbą całkowitą.

Odpowiedzi powyżej są niewystarczające, ponieważ nie obejmują liczby całkowite takie jak -0 i -0000, który technicznie, po parsowania, stają nieujemnymi liczbami całkowitymi. Inne odpowiedzi również nie potwierdzają liczb całkowitych z numerem + z przodu.

Można użyć następującego wyrażenia regularnego do walidacji:

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

Try it Online!

Objaśnienie:

^     # 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 

następujących przypadków testowych zwróci true: -0, -0000, 0, 00000, +0, +0000, 1, 12345, +1, +1234. Następujące testy zwracają fałsz: -12.3, 123.4, -1234, -1.

Uwaga:To wyrażenie nie działa dla ciągów całkowitych zapisanych w notacji naukowej.

Powiązane problemy