2013-06-05 3 views
5

Questa è una soluzione per la convalida di un numero intero. Qualcuno può spiegare la logica di Karim's answer.
Questo funziona perfettamente, ma non sono in grado di capire come.convalidare una stringa è un numero intero non negativo in javascript

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

Penso che questa domanda dovrebbe essere un commento su quella risposta ... e dovrebbe essere risposto da @Karim stesso. – Bergi

+1

Si noti che questo codice non è completamente corretto. Ad esempio, convalida una stringa come "000 ... (10.000 volte) .. 000' che è difficilmente un" numero ". – georg

risposta

11

L'espressione regolare: /^\d+$/

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

quando sono tutti combinati:

Fin dall'inizio della stringa da Alla fine ci sono uno o più numeri char [0-9] e solo il numero.

-1

Questa espressione regolare può essere meglio /^[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 

sarà anche prova contro interi non negativi che sono pre-riempita con zeri

+1

Questo fallirà su '0'. –

0

Che cosa è un numero intero non negativo?

Un numero intero non negativo è un "numero intero che è 0 o positivo".

Fonte: http://mathworld.wolfram.com/NonnegativeInteger.html

In altre parole, si stanno cercando di convalidare un intero non negativo.

Le risposte sopra riportate sono insufficienti perché non includono numeri interi come -0 e -0000, che tecnicamente dopo l'analisi diventano numeri interi non negativi. Anche le altre risposte non convalidano numeri interi con + in primo piano.

È possibile utilizzare la seguente espressione regolare per la convalida:

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

Try it Online!

Spiegazione:

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

i seguenti casi di test restituiscono vero: -0, -0000, 0, 00000, +0, +0000, 1, 12345, +1, +1234. I seguenti casi di test restituiscono false: -12.3, 123.4, -1234, -1.

Nota:Questa espressione regolare non funziona per le stringhe intere scritte in notazione scientifica.

Problemi correlati