1056 Stimmen

Telefonnummern mit Regex validieren

Ich versuche, eine umfassende Regex zusammen zu setzen, um Telefonnummern zu validieren. Idealerweise würde es internationale Formate behandeln, aber es muss US-Formate, einschließlich der folgenden behandeln:

  • 1-234-567-8901
  • 1-234-567-8901 x1234
  • 1-234-567-8901 ext1234
  • 1 (234) 567-8901
  • 1.234.567.8901
  • 1/234/567/8901
  • 12345678901

Ich werde mit meinem derzeitigen Versuch antworten, aber ich hoffe, dass jemand etwas Besseres und/oder Eleganteres weiß.

3voto

Ich hatte mit dem gleichen Problem zu kämpfen und versuchte, meine Bewerbung zukunftssicher zu machen, aber diese Jungs haben mich auf den richtigen Weg gebracht. Ich überprüfe eigentlich nicht die Nummer selbst, um zu sehen, ob sie funktioniert oder nicht, sondern versuche nur sicherzustellen, dass eine Reihe von Zahlen eingegeben wurde, die eine Erweiterung haben können oder auch nicht.

Im schlimmsten Fall, wenn der Benutzer eine unformatierte Nummer aus der XML-Datei abrufen muss, würde er die Nummern einfach in den Nummernblock des Telefons eingeben. 012345678x5 kein wirklicher Grund, es schön zu halten. Diese Art von RegEx würde bei mir in etwa so ausfallen:

\d+ ?\w{0,9} ?\d+
  • 01234467 extension 123456
  • 01234567x123456
  • 01234567890

3voto

Richard Ayotte Punkte 4841

Hier ist eine, die gut in JavaScript funktioniert. Es ist in einer Zeichenfolge, weil das ist, was das Dojo-Widget erwartet wurde.

Sie entspricht einer 10-stelligen nordamerikanischen NANP-Nummer mit optionaler Erweiterung. Leerzeichen, Bindestriche und Punkte sind akzeptierte Begrenzungszeichen.

"^(\\(?\\d\\d\\d\\)?)( |-|\\.)?\\d\\d\\d( |-|\\.)?\\d{4,4}(( |-|\\.)?[ext\\.]+ ?\\d+)?$"

2voto

Ian Punkte 11
    pattern="^[\d|\+|\(]+[\)|\d|\s|-]*[\d]$" 
    validateat="onsubmit"

Muss mit einer Ziffer enden, kann mit ( oder + oder einer Ziffer beginnen und kann + - ( oder ) enthalten

2voto

Sai prateek Punkte 11258

Finden. String regex = "^\\+(?:[0-9] ?){6,14}[0-9]$";

hilfreich für internationale Nummern.

2voto

piCookie Punkte 9252

Ich neige dazu, dem zuzustimmen, dass es am besten ist, die Nicht-Ziffern zu entfernen und einfach zu akzeptieren, was da ist. Vielleicht, um sicherzustellen, dass zumindest ein paar Ziffern vorhanden sind, obwohl das etwas wie eine alphabetische Telefonnummer "ASK-JAKE" zum Beispiel verbietet.

Ein paar einfache Perl-Ausdrücke könnten sein:

@f = /(\d+)/g;
tr/0-9//dc;

Verwenden Sie die erste, um die Zifferngruppen zusammenzuhalten, was Hinweise auf die Formatierung geben kann. Verwenden Sie die zweite, um trivialerweise alle Nicht-Ziffern zu verwerfen.

Ist es zu befürchten, dass eine Pause eingelegt werden muss und dann weitere Tasten eingegeben werden müssen? Oder etwas wie 555-1212 (auf den Piepton warten) 123?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X