#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)^ # Start of string" & @CRLF & _
" (?: # A container group:" & @CRLF & _
" (\+49|0049|\+\(49\)|\(\+49\))? [ ()\/-]* # German: country code" & @CRLF & _
" (?(1)|0)1(?:5[12579]|6[023489]|7[0-9]) # trunk prefix and company code" & @CRLF & _
" | # or" & @CRLF & _
" (\+43|0043|\+\(43\)|\(\+43\))? [ ()\/-]* # Austrian: country code" & @CRLF & _
" (?(2)|0)6(?:64|(?:50|6[0457]|7[0678]|8[0168]|9[09])) # trunk prefix and company code" & @CRLF & _
" )" & @CRLF & _
" [ ()\/-]* # zero or more spaces, parens, / and -" & @CRLF & _
" \d(?:[ \/-]*\d){6,7} # a digit and then six or seven occurrences of space, / or - and a digit" & @CRLF & _
" \s* # zero or more whites" & @CRLF & _
"$ # end of string"
Local $sString = "################################### This is allowed ##########################" & @CRLF & _
"#### Longes German format ### https://en.wikipedia.org/wiki/Telephone_numbers_in_Germany" & @CRLF & _
"017698600189" & @CRLF & _
"0176 98600189" & @CRLF & _
"0176 98 600 189" & @CRLF & _
"+4917698600189" & @CRLF & _
"+49 17698600189" & @CRLF & _
"0049 17698600189" & @CRLF & _
"004917698600189" & @CRLF & _
"(+49)17698600189" & @CRLF & _
"(+49) 17698600189" & @CRLF & _
"+(49)17698600189" & @CRLF & _
"+(49) 17698600189" & @CRLF & _
"+(49) 176 98600189" & @CRLF & _
"+(49) 176 98 600 189" & @CRLF & _
"+49 176 98 600 189" & @CRLF & _
"+49 (176) 98 600 189" & @CRLF & _
"" & @CRLF & _
"#### Shortest German format ### https://en.wikipedia.org/wiki/Telephone_numbers_in_Germany" & @CRLF & _
"01609860018" & @CRLF & _
"0160 9860018" & @CRLF & _
"0160 98 600 18" & @CRLF & _
"+491609860018" & @CRLF & _
"+49 1609860018" & @CRLF & _
"0049 1609860018" & @CRLF & _
"00491609860018" & @CRLF & _
"(+49)1609860018" & @CRLF & _
"(+49) 1609860018" & @CRLF & _
"+(49)1609860018" & @CRLF & _
"+(49) 1609860018" & @CRLF & _
"+(49) 160 9860018" & @CRLF & _
"+(49) 160 98 600 18" & @CRLF & _
"+49 160 98 600 18" & @CRLF & _
"+49 (160) 98 600 18" & @CRLF & _
"" & @CRLF & _
"#### Different Prefix https://en.wikipedia.org/wiki/Telephone_numbers_in_Germany" & @CRLF & _
"017698600189" & @CRLF & _
"01609860018" & @CRLF & _
"01519860018" & @CRLF & _
"01709860018" & @CRLF & _
"01719860018" & @CRLF & _
"01759860018" & @CRLF & _
"01529860018" & @CRLF & _
"01799860018" & @CRLF & _
"01789860018" & @CRLF & _
"01779860018" & @CRLF & _
"01559860018" & @CRLF & _
"01629860018" & @CRLF & _
"01729860018" & @CRLF & _
"01739860018" & @CRLF & _
"01749860018" & @CRLF & _
"" & @CRLF & _
"### Austrian numbers in different possible formats: https://www.tarife.at/ratgeber/vorwahl-handynetze" & @CRLF & _
"06641234567" & @CRLF & _
"066412345678" & @CRLF & _
"" & @CRLF & _
"+436641234567" & @CRLF & _
"+4366412345678" & @CRLF & _
"" & @CRLF & _
"0664 1234567" & @CRLF & _
"0664 12345678" & @CRLF & _
"" & @CRLF & _
"0664 123 456 7" & @CRLF & _
"0664 123 456 78" & @CRLF & _
"" & @CRLF & _
"0664 123 4567" & @CRLF & _
"0664 123 45678" & @CRLF & _
"" & @CRLF & _
"+43 664 1234567" & @CRLF & _
"+43 664 12345678" & @CRLF & _
"" & @CRLF & _
"+43 6641234567" & @CRLF & _
"+43 66412345678" & @CRLF & _
"" & @CRLF & _
"+43 664 123 4567" & @CRLF & _
"+43 664 123 45678" & @CRLF & _
"" & @CRLF & _
"+43 664 123 456 7" & @CRLF & _
"+43 664 123 456 78" & @CRLF & _
"" & @CRLF & _
"(+43) 664 123 456 7" & @CRLF & _
"(+43) 664 123 456 78" & @CRLF & _
"" & @CRLF & _
"+(43) 664 123 456 7" & @CRLF & _
"+(43) 664 123 456 78" & @CRLF & _
"" & @CRLF & _
"### Austrian numbers with same format but different prefix" & @CRLF & _
"06801234567" & @CRLF & _
"068012345678" & @CRLF & _
"" & @CRLF & _
"06881234567" & @CRLF & _
"068812345678" & @CRLF & _
"" & @CRLF & _
"06811234567" & @CRLF & _
"068112345678" & @CRLF & _
"" & @CRLF & _
"06991234567" & @CRLF & _
"069912345678" & @CRLF & _
"" & @CRLF & _
"06641234567" & @CRLF & _
"066412345678" & @CRLF & _
"" & @CRLF & _
"06811234567" & @CRLF & _
"068112345678" & @CRLF & _
"" & @CRLF & _
"06671234567" & @CRLF & _
"066712345678" & @CRLF & _
"" & @CRLF & _
"06501234567" & @CRLF & _
"065012345678" & @CRLF & _
"" & @CRLF & _
"06761234567" & @CRLF & _
"067612345678" & @CRLF & _
"" & @CRLF & _
"06501234567" & @CRLF & _
"065012345678" & @CRLF & _
"" & @CRLF & _
"06781234567" & @CRLF & _
"067812345678" & @CRLF & _
"" & @CRLF & _
"06771234567" & @CRLF & _
"067712345678" & @CRLF & _
"" & @CRLF & _
"06901234567" & @CRLF & _
"069012345678" & @CRLF & _
"" & @CRLF & _
"06651234567" & @CRLF & _
"066512345678" & @CRLF & _
"" & @CRLF & _
"06861234567" & @CRLF & _
"068612345678" & @CRLF & _
"" & @CRLF & _
"############################################################################################" & @CRLF & _
"############################################################################################" & @CRLF & _
"################################### This is NOT valid ######################################" & @CRLF & _
"012345678901234" & @CRLF & _
"123w345345345345" & @CRLF & _
"0123456789101191919" & @CRLF & _
"" & @CRLF & _
"### Too short" & @CRLF & _
"0160986001" & @CRLF & _
"016098600" & @CRLF & _
"01609860" & @CRLF & _
"0160986" & @CRLF & _
"016098" & @CRLF & _
"01609" & @CRLF & _
"0160" & @CRLF & _
"016" & @CRLF & _
"01" & @CRLF & _
"0" & @CRLF & _
"" & @CRLF & _
"### Too short with +49 (same is true with +43)" & @CRLF & _
"+490160986001" & @CRLF & _
"+49016098600" & @CRLF & _
"+4901609860" & @CRLF & _
"+490160986" & @CRLF & _
"+49016098" & @CRLF & _
"+4901609" & @CRLF & _
"+490160" & @CRLF & _
"+49016" & @CRLF & _
"+4901" & @CRLF & _
"+490" & @CRLF & _
"" & @CRLF & _
"### Too short with 0049 (same is true with 0043)" & @CRLF & _
"00490160986001" & @CRLF & _
"0049016098600" & @CRLF & _
"004901609860" & @CRLF & _
"00490160986" & @CRLF & _
"0049016098" & @CRLF & _
"004901609" & @CRLF & _
"00490160" & @CRLF & _
"0049016" & @CRLF & _
"004901" & @CRLF & _
"00490" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"### Too long for Germany" & @CRLF & _
"0176123456789" & @CRLF & _
"01761234567891" & @CRLF & _
"017612345678912" & @CRLF & _
"0176123456789123" & @CRLF & _
"01761234567891234" & @CRLF & _
"017612345678912345" & @CRLF & _
"0176123456789123456" & @CRLF & _
"" & @CRLF & _
"+49176123456789" & @CRLF & _
"+491761234567891" & @CRLF & _
"+4917612345678912" & @CRLF & _
"+49176123456789123" & @CRLF & _
"+491761234567891234" & @CRLF & _
"+4917612345678912345" & @CRLF & _
"+49176123456789123456" & @CRLF & _
"" & @CRLF & _
"0049176123456789" & @CRLF & _
"00491761234567891" & @CRLF & _
"004917612345678912" & @CRLF & _
"0049176123456789123" & @CRLF & _
"00491761234567891234" & @CRLF & _
"004917612345678912345" & @CRLF & _
"0049176123456789123456" & @CRLF & _
"" & @CRLF & _
"### Not German and not Austrain format for mobile numbers" & @CRLF & _
"+12127319863" & @CRLF & _
"+13322014056" & @CRLF & _
"+12126712234" & @CRLF & _
"+427532697710" & @CRLF & _
"+417868150810" & @CRLF & _
"+287533002875" & @CRLF & _
""
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm