Ich habe unten Regex für die Validierung von Telefonnummern ausprobiert, aber es hat nicht richtig funktioniert,
^([+61|0](2|4|3|7|8|)){0,2}([ 0-9]|[(]){2,3}([)]|[0-9]){6}([ ])[0-9]{7,20}$
Hier sind Beispiele, von denen ich erwarte, dass sie die Validierung bestehen
+61(02)89876544
+61 2 8986 6544
02 8986 6544
+61289876544
0414 570776
0414570776
0414 570 776
+61 414 570776
+61 (0)414 570776
Die folgenden Zeichen werden ebenfalls akzeptiert. ()-+ Leerzeichen

3ozän
Das ist ziemlich die Struktur der Telefonnummer. Die einfachste Lösung besteht darin, den Benutzer zur Eingabe in einem bestimmten Format aufzufordern oder das Formular automatisch formatieren zu lassen. Wenn Sie eine Regex verwenden müssen, habe ich mir Folgendes ausgedacht:
^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})$
Erfassungsgruppen:
- Ländercode (optional)
- Orts-/Anbieterkennzahl (optional)
- Die Telefonnummer
Demo: https://regex101.com/r/dkFASs/6
So habe ich das Format festgelegt: https://en.wikipedia.org/wiki/Telephone_numbers_in_Australia
Wenn ich eine größere Regex wie diese in Angriff nehme, ist es meiner Meinung nach am einfachsten, Ihre Testfälle in ein Tool wie z regex101.com und dann Capture-Gruppe für Capture-Gruppe (benennen Sie sie, wenn Sie können), bis Sie am Ende angelangt sind. Sobald eine Gruppe nicht passt, ändern Sie, was Sie bereits haben, bis es passt.
Bearbeiten 2019: Da diese Frage gelegentlich immer noch Aufmerksamkeit erregt, wollte ich darauf hinweisen, dass es möglicherweise besser ist, wenn möglich eine Validierungsbibliothek zu verwenden. Mein Vorschlag wäre Googles i18n-Bibliothek für Telefonnummern. Es ist viel robuster, als es eine Regex jemals sein könnte.

SydMK
Ich habe die Antwort von @3ocene positiv bewertet. Aber später gefunden passte nicht ganz zu meinem Fall.
Hier ist mein Testfall (nicht vollständig):
+(61) 455 562 400
+61-455-562-400
+61 455 562 400
+(61)-455-562-400
+(61) 455 562 400
(02) 4371 3164
(02) 4371-3164
02 80268989
03 80268989
04 80268989
05 80268989
433245898
433 245 898
433-245-898
4555-62400
123456
08 54 587 456
123456 ist negativ..
Dies ist, was ich gebaut habe, also hilft es jemandem hier, es ist:
^(\+?\(61\)|\(\+?61\)|\+?61|\(0[1-9]\)|0[1-9])?( ?-?[0-9]){7,9}$
Hier ist der Regexer-Link:
https://regex101.com/r/eiufOH/2
Ich würde zuerst alle Leerzeichen aus der Telefonnummer entfernen, da mehr Muster komplexere Regex bedeuten, und dann Folgendes anwenden:
(?:\+?61)?(?:\(0\)[23478]|\(?0?[23478]\)?)\d{8}
Soweit ich das beurteilen kann, funktioniert es.
Werde in Kürze eine Erklärung schreiben
Versuche dies
\b([\+-]?\d{2}|\d{4})\s*\(?\d+\)?\s*(?:\d+\s*)+\b

AndreasC
Modifiziertes 3ozän, um 13, 180, 19, 1300, 1800, 1900 einzuschließen
13 xxxx und 1300 xxx xxx – „Ortstarif“-Anrufe, außer für Benutzer von VoIP und Mobiltelefonen
180 xxxx und 1800 xxx xxx – FreeCall
19 xxxx und 19xx xxxx – Premium-SMS
^(?=.*)((?:\+61) ?(?:\((?=.*\)))?([2-47-8])\)?|(?:\((?=.*\)))?([0-1][2-47-8])\)?) ?-?(?=.*)((\d{1} ?-?\d{3}$)|(00 ?-?\d{4} ?-?\d{4}$)|( ?-?\d{4} ?-?\d{4}$)|(\d{2} ?-?\d{3} ?-?\d{3}$))
https://regex101.com/r/dqsaHM/3
Habe auch diesen Link gefunden, der helfen kann, Regex mit einem Flussdiagramm zu bearbeiten, hoffe es hilft
https://ihateregex.io/expr/phone/
9973200cookie-checkRegex für die Validierung australischer Telefonnummernyes
Sind nicht
+61(02)89876544
und+61 (0)414 570776
ungültig? Solltest du das nicht fallen lassen0
aus der Vorwahl if+61
ist enthalten.– nnnnn
12. Oktober 2016 um 5:42 Uhr