Frage

Ich habe ein Formular auf der Website, die für eine Nachuntersuchung Zwecke eine US-Telefonnummer Eingabe erfordert, und dies ist sehr notwendig, in diesem Fall. Ich möchte versuchen, Benutzer Eingabe Junk-Daten 330-000-0000 zu beseitigen. Ich habe einige Optionen von Dritten eingesehen, die für Sie Telefonnummern bestätigen jedoch IDK wenn dies die beste Option für diese Situation. Allerdings, wenn Sie eine dieser Dritten jeder benutzt haben und kann eine Empfehlung, die auch stark hier geschätzt werden würde.

Allerdings Ich erwäge die Zahl gegen eine Reihe von Regeln, die Überprüfung nur versuchen, die Junk-Telefonnummern empfangen zu verengen.

  • keine 555-Nummer
  • enthält keine 7 identische Ziffern
  • gültige Vorwahl (das ist leicht verfügbar)
  • keine 123-1234 oder 123-4567
  • Ich glaube, ich auch 867-5309 zählen konnte (heh * )

Wäre das Ergebnis in allen Situationen, die Sie daran denken können, würde ein Benutzer nicht erlauben, ihre Telefonnummer eingeben? Könnten Sie von irgendwelchen anderen Regeln denken, dass eine Telefonnummer sollte nicht enthalten? Alle anderen Gedanken?

War es hilfreich?

Lösung

Es scheint mir, dass man mehr Mühe in diesen setzen ist, als es garantiert. Bedenken Sie:

Wenn Ihr Ziel ist es falsch eingegebene Telefonnummern zum Schutz vor, dann können Sie wahrscheinlich mehr als 90% von ihnen fangen mit nur eine sehr einfachen Prüfung.

Wenn Ihr Ziel ist es, versuchen Benutzer zu zwingen, eine gültige Nummer zu geben, ob sie wollen oder nicht, diese Informationen zu geben, dann haben Sie auf einer hoffnungslose Aufgabe gemacht - auch wenn Sie in der Lage waren zu 100% korrekt zuzugreifen, bis -to-the-Sekunden-Telco-Datenbanken zu überprüfen, ob die eingegebene genaue Zahl ist noch leben, noch Sie gewinnen keine Zusicherung, dass die Zahl, die sie Sie gaben ihre eigene ist. Wieder einmal eine einfache Überprüfung wird die Mehrheit der Menschen Eingabe falsche Zahlen vereitelt, aber diejenigen, die bereit sind, zu versuchen, mehr als zwei oder drei Mal wird einen Weg finden, Ihre Versuche zu vereiteln ihre Zahl zu gewinnen.

So oder so, ein einfacher Test wird Ihnen gute Ergebnisse und geht in komplexere Regelsätze bekommen zunehmend mehr Zeit in Anspruch nehmen, während immer weniger Nutzen für Dich bereitstellt (während möglicherweise auch falsch positive Zugabe, wie bereits mit dem gezeigten " sieben der gleichen Ziffer“und 867-5309 Fälle).

Andere Tipps

Sie können intern in Ihrer App mit regulären Ausdrücken Telefonnummer Validierung tun. Je nach Ihrer Sprache können Sie eine Funktion aufrufen, die wahr zurück, wenn ein im Lieferumfang enthaltenen Telefonnummer Ausdruck übereinstimmt.

In PHP:

function phone_number_is_valid($phone) {
    return (eregi('^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$', $phone));
}

Sie können online verschiedene reguläre Ausdrücke nachzuschlagen. Ich fand das eine über ein unter http://regexlib.com/DisplayPatterns.aspx?categoryId = 7 & cattabindex = 2

Edit: Einige sprachspezifische Websites für reguläre Ausdrücke:

Wenn Sie die Vorwahl überprüfen können, dann, wenn Sie wirklich, wirklich müssen ihre Telefonnummer wissen, sind Sie wahrscheinlich so viel tun, wie sinnvoll ist.

Amybe werfen Sie einen Blick auf die Antworten href="https://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation"> diese Frage

867-5309 ist eine gültige Telefonnummer, die den Menschen in verschiedenen Vorwahlen zugeordnet ist.

In Django gibt es ein nettes kleine contrib Paket namens localflavor weicht viele länderspezifische Validierungscode hat, beispielsweise Postleitzahlen oder Telefonnummern. Sie können in der Quelle aussehen zu sehen, wie django diese für das Land übernimmt die Sie verwenden möchten; Zum Beispiel: US Formularvalidierung . Dies kann eine große Zuflucht sein für Informationen über Länder, die Sie wenig wie gut kennen.

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

Auch 123-1234 oder 123-4567 sind nur ungültige Nummern, weil das Präfix mit einem 1 beginnt, aber 234-5678 oder 234-1234 würde tatsächlich gültig sein (obwohl es eine Fälschung aussieht).

Wenn Sie stecken mit nur US- und Kanada-Format Zahlen, ich denke, die folgende regex funktionieren könnte: [2-9] [0-9] [0-9] - [2-9] [0-9] [0-9] - [0-9] [0-9] [0-9] [0- 9] &! [2-9] [0-9] [0-9] -555- [0-9] [0-9] [0-9] [0-9]

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

Diese Parameter sehen ziemlich gut zu mir, ich könnte auch vermeiden Zahlen mit 911 beginnen, nur um sicher zu sein.

In meiner Forschung, die ich vorher getan haben sollte>.

Dies ist eine kurze Funktion, die ich verwenden (siehe unten). Ich habe Zugriff auf eine Datenbank, die zipcode postleitzahlen und Präfix-Daten enthält, die monatlich aktualisiert wird. Ich habe oft darüber nachgedacht, ein Datum dip bestätigen tun, dass das Präfix für den Bereich Code vorhanden ist.

    public static bool isPhone(string phoneNum)
    {
        Regex rxPhone1, rxPhone2;

        rxPhone1 = new Regex(@"^\d{10,}$");
        rxPhone2 = new Regex(@"(\d)\1\1\1\1\1\1\1\1\1");

        if(phoneNum.Trim() == string.Empty)
            return false;

        if(phoneNum.Length != 10)
            return false;

        //Check to make sure the phone number has at least 10 digits
        if (!rxPhone1.IsMatch(phoneNum))
            return false;

        //Check for repeating characters (ex. 9999999999)
        if (rxPhone2.IsMatch(phoneNum))
            return false;

        //Make sure first digit is not 1 or zero
        if(phoneNum.Substring(0,1) == "1" || phoneNum.Substring(0,1) == "0")
            return false;

        return true;

    }

ich nicht nkow, ob dies der richtige Ort ist, es ist eine Formatierungsfunktion eher als eine Validierungsfunktion, dachte ich, ist es mit der Community teilen lassen, vielleicht einen Tag nützlich sein ..

Private Sub OnNumberChanged()
    Dim sep = "-"
    Dim num As String = Number.ToCharArray.Where(Function(c) Char.IsDigit(c)) _
                                                 .ToArray
    Dim ext As String = Nothing
    If num.Length > 10 Then ext = num.Substring(10)
    ext = If(IsNullOrEmpty(ext), "", " x" & ext)
    _Number = Left(num, 3) & sep & Mid(num, 4, 3) & sep & Mid(num, 7, 4) & ext
End Sub

Meine Validierungsfunktion ist wie folgt:

Public Shared Function ValidatePhoneNumber(ByVal number As String)
    Return number IsNot Nothing AndAlso number.ToCharArray. _
                                  Where(Function(c) Char.IsNumber(c)).Count >= 10
End Function

Ich nenne diese letzte Funktion @ the OnNumberChanging (Anzahl As String) -Methode des Unternehmens steht.

Für US und internationale Telefonvalidierung ich diesen Code gefunden am besten geeignet:

((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$

Hier finden Sie eine (wenn auch etwas veraltet) Diskussion hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top