German Phone Number
Detects German mobile telephone numbers per the Bundesnetzagentur's (BNetzA) Nummernplan für Mobile Dienste: the (0)15, (0)16, and (0)17 mobile sub-ranges, in both the domestic (leading trunk "0") and international (+49, leading 0 dropped) forms. BNetzA's own published length table shows the national significant number (the digits after the leading 0, including the "1" of "15/16/17") is 10 digits for most 016x/017x allocations and 11 digits for the 015x range and the 1609/176 exceptions — every quantifier below is bounded to this documented 10-11 digit span rather than left open-ended. The 10-11 bound is applied as a single envelope across all three ranges (the regex cannot pin 015x to exactly 11 and non-exception 016x/017x to exactly 10 without per-sub-range length alternation), so a 10-digit 015x or an 11-digit non-exception 016x/017x rendering is accepted — a deliberate, documented over-acceptance kept small by the envelope itself. Beyond the DIN 5008:2020 space-grouped form, two widespread legacy DIN 5008 renderings of the mobile prefix are covered: the slash form "0171/3920045" and the parenthesised form "(0171) 3920045" — both deprecated by the current DIN 5008 (which prescribes plain space grouping) but still common in signatures and letterheads — plus the "+49 (0)171 ..." letterhead form (nonstandard per ITU-T E.123, but ubiquitous). Geographic (Ortsnetz) landline numbers are intentionally out of scope (so the landline renderings "030/12345678" and "(030) 12345678" are likewise not matched): BNetzA states area codes run 2-5 digits and new allocations are capped at 11 significant digits (10 for the Berlin/Hamburg/Frankfurt/Munich two-digit-code exception), but does not publish a verified minimum length for the existing stock of legacy numbers, so a low-end bound would be invented rather than sourced — mirroring in-phone-number's decision to scope out India's similarly under-specified STD/landline numbers.
- Type
- regex
- Engine
- universal
- Confidence
- medium
- Confidence justification
- Medium confidence: the 01[5-7] mobile-family leading digits and the 10-11 digit length bound (drawn directly from BNetzA's published Rufnummernblock length table) narrow the format, but German mobile numbers carry no checksum and a 10-11 digit sequence with those leading digits is still a high digit-collision format. Per the phone-family convention (every tier requires positive corroborative evidence; a +CC prefix alone is insufficient gating; there is no 65 rung), both the domestic and +49 international sub-regexes are evidence-gated at every tier: 75 requires generic phone-context evidence and 85 requires country-specific phone keywords with template/noise exclusion. The literal +49 prefix improves precision when present but is not by itself sufficient gating.
- Jurisdictions
- de
- Regulations
- GDPR
- Frameworks
- ISO 27001, ISO 27701, SOC 2
- Data categories
- pii, contact-information
- Scope
- narrow
- Risk rating
- 5
- Platform compatibility
- Purview: Compatible, GCP DLP: Unsupported, Macie: Unsupported, Zscaler: Compatible, Palo Alto: Unsupported, Netskope: Unsupported
Pattern
(?<!\d)(?:\+49[\s.-]?(?:\(0\)[\s.-]?)?1[5-7][\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d(?:[\s.-]?\d)?|0[\s.-]?1[5-7][\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d[\s.-]?\d(?:[\s.-]?\d)?|01[5-7]\d\s?/\s?\d(?:[\s.-]?\d){6,7}|\(01[5-7]\d\)[\s.-]?\d(?:[\s.-]?\d){6,7})(?!\d)
Corroborative evidence keywords
phone, mobile, call, text, contact number, German phone number, Telefonnummer, call me at, cell, telephone, tel, dial, text me, text message, [object Object], WhatsApp, voicemail, phone number, mobile number, landline (+8 more)
Proximity: 300 characters
Should match
Vodafone: 0152 28817386— BNetzA-reserved "drama number" (Mitteilung 148/2021), Vodafone 0152 mobile range, space-separatedRufnummer: 0172 9925904— BNetzA-reserved drama number, 0172 mobile rangeCall the office mobile 0171-3920045— BNetzA-reserved Deutsche Telekom drama number block (0171 3920000-3920099), hyphenatedInternational contact: +49 152 28817386— International +49 form of the Vodafone drama number, leading 0 droppedDurchwahl: 0152/28817386— Legacy DIN 5008 slash rendering of the Vodafone drama number (deprecated by DIN 5008:2020 but still widespread)Handy: (0171) 3920045— Legacy parenthesised-prefix rendering of the Deutsche Telekom drama numberBriefkopf: +49 (0)152 28817386— Widespread "+CC (0)" letterhead rendering — nonstandard per E.123 but common on German letterheads
Should not match
030 23125678— BNetzA-reserved Berlin landline drama number — geographic (Ortsnetz) numbers are out of scope for this mobile-only pattern0180 5123456— 0180 is a special-rate service prefix, not a 015/016/017 mobile range — third digit 8 is excluded0152 2881— Only 4 digits after the 0152 mobile prefix, far short of the required 8-990152288173869999— Valid-shaped mobile digit run embedded inside a longer reference number, rejected by digit boundaries030/12345678— DIN legacy slash rendering of a Berlin landline — geographic numbers stay out of scope, slash or not(030) 12345678— Parenthesised rendering of a Berlin landline — geographic numbers stay out of scopeTermin am 01/07/2026 um 15:30— Date written with slashes — the slash branch requires a 4-digit 015/016/017 mobile prefix and 7-8 subscriber digitsAz. 0152/2020— File/case-reference notation — only four digits after the slash, far short of the required 7-8
Known false positives
- A 10-11 digit sequence with the 01[5-7] mobile leading-digit shape can still coincidentally match invoice numbers, order numbers, or other structured identifiers of similar length and leading-digit distribution. Mitigation: Every tier — for both the domestic and +49 international sub-regexes — requires positive phone-context or country-specific evidence within 300 characters; no zero-evidence tier exists, so a bare digit run without corroborating context never fires at any confidence level.
- Geographic (Ortsnetz) landline numbers are not detected at all (a false negative, not a false positive, but noted for completeness): BNetzA documents a 2-5 digit area code and an 11-digit cap for new allocations (10 for the Berlin/Hamburg/Frankfurt/Munich exception), but publishes no verified minimum length across the existing stock, so bounding a landline regex would mean inventing a lower bound rather than sourcing it. Mitigation: A future revision could add landline coverage if a genuinely verifiable minimum-length constraint is confirmed from a primary BNetzA source, following the same verification bar applied here.
References
- Bundesnetzagentur: Rufnummern für Mobile Dienste ((0)15, (0)16, (0)17)
- Bundesnetzagentur: Länge der Rufnummernblöcke (Mobile Dienste) — 10/11-digit national-format length table
- Bundesnetzagentur Mitteilung 148/2021: Rufnummern für Medienproduktionen ("Drama Numbers") — reserved fictional test numbers
- working@office: Telefonnummern nach DIN 5008 — current space-grouped form; slash/hyphen/parenthesis renderings documented as the deprecated legacy convention
- ITU-T Recommendation E.123: Notation for national and international telephone numbers — the international "(0)" trunk-digit form is documented as common practice that E.123 advises against