Hi,
Hat jemand von euch einen regulären Ausdruck zum Prüfen auf eine Telefonnummer parat? Ich nutze die eregi()-Funktion von php5
Ich habe schon so einiges abgesucht und konnte leider nichts brauchbares finden.
Woraus besteht eine Telefonnummer üblicherweise (nicht nach Norm, sondern so, wie Leute es aufschreiben)?
1. evtl. eine Ländervorwahl (angeführt von + oder 00, danach IIRC bis zu 4 Ziffern, deren erste keine 0 ist, üblicherweise ohne Leerzeichen dazwischen, gefolgt von einem optionalen Leerzeichen), also
(?:(?:+|00)[1-9][0-9]{0,3} ?)?
2. eine Ortsvorwahl (normalerweise mit führender Null, die aber auch entfallen kann, wenn Ländervorwahl vorhanden ist, ggf. in Klammern, dann aber ohne führende 0, üblicherweise ohne Leerzeichen dazwischen, die genaue Ziffernzahl ist mir nicht bekannt, ich nehm mal 6 als Maximum), also
(?:([1-9][0-9]{0,5})|0?[1-9][0-9]{0,5})
3. eine Rufnummer (1. Ziffer keine 0, afaik bis zu 8 Ziffern, oft mit Leerzeichen dazwischen gruppiert)
[1-9](?: ?[1-9]){3,7}
(die Forderung nach 1 + 3 Ziffern mindestens schließt 110, 112, 911 und ähnliche aus
4. eine Durchwahl (Bindestrich, bis zu 5 Ziffern, ggf. mit Leerzeichen dazwischen)
(?: ?-(?: ?[0-9]){1,5})?
Jetzt muß man das nur noch zusammenkleistern (zwischen Vorwahl und Rufnummer noch Leerzeichen oder / zulassen:
(?:(?:+|00)[1-9][0-9]{0,3} ?)?(?:([1-9][0-9]{0,5})|0?[1-9][0-9]{0,5})(?: (?:/ ))?[1-9](?: ?[1-9]){3,7}(?: ?-(?: ?[0-9]){1,5})?
Wenn es nur um deutsche Nummern geht (Landesvorwahl dann
(?:(?:+|00)49 ?)?
) , könnte man vor der Rufnummer noch einen negativen Lookahead auf 11 einbauen, damit Auskunftsdienste (hier werden Sie gehelft, Feuerwehr usw. ausgeschlossen werden und ggf. andere Sondernummern), also
(?!11|19222)
direkt vor die Rufnummer (nach dem optionalen Leerzeichen) einfügen.
Wenn die Einzelteile gemerkt werden sollen, dann halt noch ggf. () um die Teile setzen (und dabei darauf achten, daß die optionalen Leerzeichen an den Rändern nicht mit in den () stehen.
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.