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. Geographic (Ortsnetz) landline numbers are intentionally out of scope: 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.-]?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)?)(?!\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

Proximity: 300 characters

Should match

Should not match

Known false positives

References