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

Should not match

Known false positives

References