Überprüfung der US-Telefonnummer

7

Ich habe ein Website-Formular, das eine US-Telefonnummer-Eingabe für Folgezwecke erfordert, und das ist in diesem Fall sehr notwendig. Ich möchte versuchen, Benutzer zu entfernen, die Junk-Daten eingeben 330-000-0000 . Ich habe einige Optionen von Drittanbietern gesehen, die Telefonnummern für Sie validieren, jedoch idk, wenn das die beste Option für diese Situation ist. Wenn Sie jedoch einen dieser Dritten benutzt haben und eine Empfehlung abgeben können, die auch hier sehr geschätzt wird.

Ich überlege jedoch, ob ich die Nummer anhand einer Reihe von Regeln überprüfen soll, um zu versuchen, die empfangenen Junk-Telefonnummern einzugrenzen.

  • keine 555 Nummer
  • enthält nicht 7 identische Ziffern
  • gültige Ortsvorwahl (diese ist sofort verfügbar)
  • nicht 123-1234 oder 123-4567
  • Ich könnte auch 867-5309 (heh * )
  • zählen

Würde dies dazu führen, dass Sie in Situationen, in denen Sie denken, einem Benutzer die Eingabe seiner Telefonnummer nicht erlauben würden? Können Sie sich weitere Regeln vorstellen, die eine Telefonnummer nicht enthalten sollte? Irgendwelche anderen Gedanken?

    
Patcouch22 06.10.2008, 18:10
quelle

14 Antworten

9

Es scheint mir, dass Sie sich mehr anstrengen, als es rechtfertigt. Überlegen Sie:

Wenn Sie vor falsch eingegebenen Telefonnummern schützen möchten, können Sie wahrscheinlich mit nur einem sehr einfachen Scheck mehr als 90% davon abfangen.

Wenn Sie versuchen, Benutzer dazu zu zwingen, eine gültige Nummer anzugeben, ob sie diese Informationen weitergeben möchten oder nicht, dann haben Sie eine hoffnungslose Aufgabe übernommen - selbst wenn Sie auf 100% genau zugreifen konnten -zu-der-Sekunde-Telco-Datenbanken, um zu verifizieren, dass die genaue eingegebene Nummer derzeit live ist, können Sie immer noch keine Gewissheit darüber erlangen, dass die Nummer, die sie Ihnen gegeben haben, ihre eigene ist. Noch einmal, ein einfacher Check wird die Mehrheit der Leute, die gefälschte Zahlen eingeben, vereiteln, aber diejenigen, die bereit sind, mehr als zwei oder drei Mal zu versuchen werden einen Weg finden, Ihre Versuche zu besiegen, ihre Zahlen zu gewinnen.

Wie auch immer, ein einfacher Test wird Ihnen gute Ergebnisse bringen, und komplexere Regelwerke werden immer mehr Zeit in Anspruch nehmen, während Sie immer weniger Nutzen bringen (während Sie möglicherweise auch falsche Positive hinzufügen, wie bereits gezeigt). sieben der gleichen Ziffer "und 867-5309 Fälle).

    
Dave Sherohman 06.10.2008, 20:50
quelle
3

Sie können die Telefonnummernvalidierung intern in Ihrer App mithilfe von regulären Ausdrücken durchführen. Abhängig von Ihrer Sprache können Sie eine Funktion aufrufen, die true zurückgibt, wenn eine angegebene Telefonnummer mit dem Ausdruck übereinstimmt.

In PHP:

%Vor%

Sie können verschiedene reguläre Ausdrücke online nachschlagen. Ich fand das eine über dem bei Ссылка

Bearbeiten: Einige sprachspezifische Sites für reguläre Ausdrücke:

GloryFish 06.10.2008 18:16
quelle
2

Wenn Sie die Ortskennzahl bestätigen können, außer Sie wirklich, wirklich müssen ihre Telefonnummer kennen, tun Sie wahrscheinlich so viel wie sinnvoll ist.

    
tloach 06.10.2008 18:15
quelle
2

Amybe werfen Sie einen Blick auf die Antworten auf diese Frage .

    
Rob Wells 06.10.2008 18:18
quelle
1

867-5309 ist eine gültige Telefonnummer, die Personen in verschiedenen Vorwahlbereichen zugewiesen ist.

    
Neall 06.10.2008 18:11
quelle
1

In Django gibt es ein nettes kleines contrib-Paket namens localflavor, das viele länderspezifische Validierungscodes enthält, zum Beispiel Postleitzahlen oder Telefonnummern. Sie können auch in der Quelle nachschauen, wie Django diese für das Land behandelt, das Sie verwenden möchten; Zum Beispiel: US-Formularprüfung . Dies kann ein großer Rückgriff auf Informationen über Länder sein, von denen Sie wenig wissen.

    
fijter 06.10.2008 18:22
quelle
1

Ihre Kunden können immer noch tun, was ich tue, das ist die lokale Moviefone-Nummer.

Auch 123-1234 oder 123-4567 sind nur ungültige Zahlen, da das Präfix mit einer 1 beginnt, aber 234-5678 oder 234-1234 wäre eigentlich gültig (obwohl es gefälscht aussieht).

    
Kip 06.10.2008 18:18
quelle
0

Wenn Sie nur mit Zahlen im US-amerikanischen und kanadischen Format arbeiten, könnte der folgende Regex funktionieren: [2-9] [0-9] [0-9] - [2-9] [0-9] [0-9] - [0-9] [0-9] [0-9] [0- 9] & amp; ! [2-9] [0-9] [0-9] -555- [0-9] [0-9] [0-9] [0-9]

    
warren 06.10.2008 18:13
quelle
0

Sie müssen auch die zehnstellige Wahl berücksichtigen, die jetzt in einigen Bereichen verwendet wird: Dies unterscheidet sich von der Fernwahl (dh 303-555-1234, im Gegensatz zu 1-303-555-1234) ). An manchen Orten ist eine gültige Telefonnummer zehn Ziffern lang; in anderen ist es sieben.

    
TheSmurf 06.10.2008 18:14
quelle
0

Diese Parameter sehen für mich ziemlich gut aus. Ich könnte auch Nummern vermeiden, die mit 911 beginnen, nur um sicher zu sein.

    
chills42 06.10.2008 18:17
quelle
0

Bei meiner Recherche, die ich vorher hätte machen sollen & lt; & lt; Ich habe festgestellt, dass 7 identische Ziffern gültige Telefonnummern sind. Also kann ich diese Regel auszählen.

    
Patcouch22 06.10.2008 18:17
quelle
0

Dies ist eine schnelle Funktion, die ich verwende (unten). Ich habe Zugang zu einer Postleitzahlen-Datenbank, die Orts- und Präfixdaten enthält, die monatlich aktualisiert werden. Ich habe oft darüber nachgedacht, einen Daten-Dip durchzuführen, um zu bestätigen, dass das Präfix für die Vorwahl existiert.

%Vor%     
J.Hendrix 04.10.2009 18:00
quelle
0

Ich frage mich nicht, ob dies der richtige Ort ist, es ist eine Formatierungsfunktion und keine Validierungsfunktion, ich dachte, lass es uns mit der Community teilen, vielleicht wird es eines Tages hilfreich sein ..

%Vor%

Meine Validierungsfunktion ist wie folgt:

%Vor%

Ich rufe diese letzte Funktion @ die OnNumberChanging (Nummer als String) -Methode der Entität.

    
Shimmy 29.10.2009 06:03
quelle
0

Für die Validierung von US- und internationalen Telefonen fand ich diesen Code am besten geeignet:

%Vor%

Sie finden eine (wenn auch etwas veraltete) Diskussion hier .

    
Josh 12.11.2010 20:36
quelle