2011-01-14 2 views
4

Ich möchte ein Eingabefeld validieren. Der Benutzer sollte eine Telefonnummer mit einer Mindestlänge von 10 Ziffern eingeben.Prüfe String für Integer

Also muss ich für illegale Zeichen überprüfen. Es wäre schön, einfach zu überprüfen, ob die Eingabe eine Ganzzahl ist oder nicht.

kam ich mit diesem, aber es funktioniert nicht (n wäre die Zeichenfolge).

function isInt(n){ 
    return typeof n== 'number' && n%1==0; 
} 

Irgendwelche Ideen?

+2

Was passiert, wenn die Put in so etwas wie "555-1212 ext 323"? –

+2

http://www.smartwebby.com/DHTML/phone_no_validation.asp –

Antwort

12

Sie können einen Test wie folgt tun:

input.length >= 10 && /^[0-9]+$/.test(input) 

Das wird scheitern, wenn es nicht-Ziffern in der Zeichenfolge oder die Zeichenfolge weniger als 10 Zeichen lang

+1

+1 für die eigentliche Frage zu beantworten (obwohl wahrscheinlich gut zu prüfen, ob es bereits eine Reihe).Aber wie Diodeus hervorhebt, sind die Telefonnummern keine Ganzzahlen, und die Steuerung des OPs wäre ein anderer Weg. –

+4

Nur mit Regex '^ [0-9] {10,} $' wäre genug – darioo

+0

@TJ Sie haben absolut Recht, meine Antwort war ein bisschen faul: s –

1

könnte zuviel des Guten für Sie , aber Google hat vor nicht allzu langer Zeit eine library zur Telefonvalidierung angekündigt. Java- und Javascript-Varianten sind verfügbar.

1

Validieren eine Telefonnummer ist ein wenig:

function isInt(input){ 
    return ((input - 0) == input && input % 1==0); 
} 

Es bereits zu diesem Problem eine SO-Frage komplizierter als zu prüfen, ob die Eingabe eine ganze Zahl ist. Als Beispiel können Telefonnummern mit Nullen beginnen und beginnen, also ist es nicht technisch und int. Auch können Benutzer Striche eingeben: Zum Beispiel:

00 34 922-123-456 

So, wie für die Validierung es Ihnen ein paar Möglichkeiten:

  • Verwenden regulären Ausdruck zu validieren, haben einen Blick auf:

    http://regexlib.com/

    wird diese Seite Hunderte von Beispielen haben

  • Verwenden Looping jeweils Zeichen wiederum zu überprüfen, ist also Zeichen int oder Strich

ich den ehemaligen empfehlen würde, wie diese von den Benutzern über konsistente Eingabe abhängig ist und Sie nicht bekommen, dass

0

Warum nicht verwenden:

return (+val === ~~val && null !== val);

als eine Rückkehr in Ihrer Funktion?

dies ist die Ausgabe der JavaScript-Konsole

> +"foobar" === ~~"foobar" 
    false 
> +1.6 === ~~1.6 
    false 
> +'-1' === ~~'-1' 
    true 
> +'-1.56' === ~~'-1.56' 
    false 
> +1 === ~~1 
    true 
> +-1 === ~~-1 
    true 
> +null === ~~null // this is why we need the "&& null !== val" in our return call 
    true 
+0

Ich weiß, es ist eine späte Antwort, aber da ich danach suchte, könnte es auch anderen helfen. –

+1

'+" \ r "=== ~~" \ r "' gibt wahr. Hmm ... –