seth: Regulärer Ausdruck für Telefonnummer

Beitrag lesen

gudn tach!

[...] nicht nach Norm, sondern so, wie Leute es aufschreiben [...]

ack.
allerdings nutzen einige leute leerzeichen zur zifferngruppierung auch schon in den 5-stelligen vorwahlnummern und setzen nach der vorwahl einen bindestrich.
wuerde man das auch noch beruecksichtigen, wuerde der ausdruck halt noch etwas groesser oder man beschraenkt sich letztlich einfach auf
  /^+?\d[0-9 /-]+\d\z/ ;-)

  1. eine Rufnummer (1. Ziffer keine 0, afaik bis zu 8 Ziffern, oft mit Leerzeichen dazwischen gruppiert)
    [1-9](?: ?[1-9]){3,7}

ein typo: [1-9](?: ?[0-9]){3,7}
                     ^ 0 statt 1

(die Forderung nach 1 + 3 Ziffern mindestens schließt 110, 112, 911 und ähnliche aus

...und auch einige rufnummern. zumindest 2001 gab es noch private 3-stellige rufnummern. hat sich das geaendert?

  1. eine Durchwahl (Bindestrich, bis zu 5 Ziffern, ggf. mit Leerzeichen dazwischen)
    (?: ?-(?: ?[0-9]){1,5})?

also z.b. "-123 4" und "-12345" aber nicht "-123 45"?

[end-regexp]

(?:(?:+|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})?

die leerzeichen vor oder nach dem slash (welches auch manchmal ein bindestrich ist) werden oft weggelassen.
und um die zifferngruppierungs-leerzeichen an beliebiger stelle zu beruecksichtigen, koennte man einfach vor dem ueberpruefen in einer kopie des strings alle leerzeichen killen und dann statt

/^(?:(?:+|00)[1-9][0-9]{0,3} ?)?(?:([1-9][0-9]{0,5})|0?[1-9][0-9]{0,5})(?: ?/ ?| )?[1-9](?: ?[0-9]){2,7}(?: ?-(?: ?[0-9]){1,5})?\z/

das etwas kuerzere
  /^(?:(?:+|00)[1-9]\d{0,3})?(?:([1-9]\d{0,5})|0?[1-9]\d{0,5})[/-]?[1-9]\d{2,7}(?:-\d{1,5})?\z/
erhalten, mit dem nachteil, dass z.b. nach din formatierte nummern zwar erkannt, aber nicht mehr so leicht aufgeschluesselt werden koennten.

prost
seth