import re
regex = re.compile(r"^(?:\+4[39]|004[39]|0|\+\(49\)|\(\+49\))\s?(?=(?:[^\d\n]*\d){10,12}(?!\d))(\()?[19][1567]\d{1,2}(?(1)\))\s?\d(?:[ /-]?\d)+", flags=re.MULTILINE)
test_str = ("################################### This is allowed ##########################\n"
"+49 15207930698\n"
"+49 15207955279\n"
"+49 1739341284\n"
"+49 1626589266\n\n"
"+49915175461907\n"
"+4915207930698\n"
"+491635556416\n"
"017687400179\n"
"015903900297\n"
"015175355164\n"
"015175354885\n"
"01771789427\n\n"
"+49 915175461907\n"
"+43 915175461907\n"
"+49159039012341\n"
"+43159039012341\n"
"+4915207829969\n"
"+4917697400179\n"
"+4915903904567\n"
"+4915902944599\n"
"+4915902944599\n"
"+4915903904567\n"
"+491739341284\n"
"+431739341284\n\n"
"+49 176 97 456 123\n"
"0176 79 123 17 9\n"
"0176 97 50 01 79\n"
"0176 79 123 179\n"
"0174 80123179\n\n"
"0049 915175461907\n"
"0043 915175461907\n"
"0049159039012341\n"
"0043159039012341\n"
"004915207829969\n\n"
"(+49) 17697123456\n"
"+(49) (1739) 34 12 84\n"
"+49 (1739) 34-12-84\n\n"
"############################################################################################\n"
"################################### This is NOT allowed ####################################\n"
"012345678901234\n"
"123w345345345345\n"
"0123456789101191919\n\n"
"### Too short\n"
"+49 15902\n"
"+49 1590123\n"
"+49 15903567\n"
"+49 177178796\n"
"+49 757130309\n\n"
"+4915902\n"
"+491590123\n"
"+4915903567\n"
"+49177178796\n"
"+49757130309\n\n"
"### Too long\n"
"+49 1590345985412\n"
"+491590345985412\n\n"
"### Not German and not Austrain format\n"
"+12127319863\n"
"+13322014056\n"
"+12126712234\n"
"+427532697710\n"
"+417868150810\n"
"+287533002875\n")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html