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ß.

19voto

Stuart Kershaw Punkte 15083

Hier ist ein wunderbares Muster, das der von mir angestrebten Validierung am nächsten kam. Ich bin nicht der ursprüngliche Autor, aber ich denke, es ist es wert, es mit anderen zu teilen, da ich dieses Problem als sehr komplex und ohne eine prägnante oder allgemein nützliche Antwort empfand.

Die folgende Regex fängt weit verbreitete Zahlen- und Zeichenkombinationen in einer Vielzahl von globalen Telefonnummernformaten ab:

/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/gm

Positiv:
+42 555.123.4567
+1-(800)-123-4567
+7 555 1234567
+7(926)1234567
(926) 1234567
+79261234567
926 1234567
9261234567
1234567
123-4567
123-89-01
495 1234567
469 123 45 67
89261234567
8 (926) 1234567
926.123.4567
415-555-1234
650-555-2345
(416)555-3456
202 555 4567
4035555678
1 416 555 9292

Negativ:
926 3 4
8 800 600-APFEL

Ursprüngliche Quelle: http://www.regexr.com/38pvb

15voto

Rob Wells Punkte 35303

Haben Sie schon einmal einen Blick auf RegExLib ?

Die Eingabe der US-Telefonnummer ergab eine ganze Liste von Möglichkeiten.

15voto

ReactiveRaven Punkte 6413

Mein Versuch einer nicht einschränkenden Regex:

/^[+#*\(\)\[\]]*([0-9][ ext+-pw#*\(\)\[\]]*){6,45}$/

Akzeptiert:

+(01) 123 (456) 789 ext555
123456
*44 123-456-789 [321]
123456
123456789012345678901234567890123456789012345
*****++[](][((( 123456tteexxttppww

Ablehnungen:

mob 07777 777777
1234 567 890 after 5pm
john smith
(empty)
1234567890123456789012345678901234567890123456
911

Es liegt an Ihnen, sie für die Ausstellung zu reinigen. Nach der Validierung könnte aber eine Zahl sein.

14voto

Ich habe festgestellt, dass dies recht gut funktioniert:

^\(*\+*[1-9]{0,3}\)*-*[1-9]{0,3}[-. /]*\(*[2-9]\d{2}\)*[-. /]*\d{3}[-. /]*\d{4} *e*x*t*\.* *\d{0,4}$

Es funktioniert für diese Zahlenformate:

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
1-234-567-8901 ext. 1234
(+351) 282 433 5050

Stellen Sie sicher, dass Sie globale UND mehrzeilige Flags verwenden.

Link: http://www.regexr.com/3bp4b

11voto

GaiusSensei Punkte 1864

Dies ist ein einfaches Muster für reguläre Ausdrücke für philippinische Handynummern:

((\+[0-9]{2})|0)[.\- ]?9[0-9]{2}[.\- ]?[0-9]{3}[.\- ]?[0-9]{4}

oder

((\+63)|0)[.\- ]?9[0-9]{2}[.\- ]?[0-9]{3}[.\- ]?[0-9]{4}

werden mit diesen übereinstimmen:

+63.917.123.4567  
+63-917-123-4567  
+63 917 123 4567  
+639171234567  
09171234567  

Die erste passt auf JEDEN zweistelligen Ländercode, während die zweite ausschließlich auf den philippinischen Ländercode passt.

Testen Sie es hier: http://refiddle.com/1ox

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