#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)^ # begin" & @CRLF & _
"\s*# some empty spaces" & @CRLF & _
"(?:" & @CRLF & _
" \+? # + symbol" & @CRLF & _
" \d{1,2} # country code" & @CRLF & _
" \s*" & @CRLF & _
" (?(?=\)) # if followed by parens" & @CRLF & _
" | # then dash not allowed" & @CRLF & _
" -? # else optional dash" & @CRLF & _
" )" & @CRLF & _
")? #prefix like +380" & @CRLF & _
"\s*" & @CRLF & _
"(?: " & @CRLF & _
" (?P<leftparen>\()? # optional left paren" & @CRLF & _
" \s*" & @CRLF & _
" 0\d\d " & @CRLF & _
" \s*" & @CRLF & _
" (?(leftparen)\)|) # right paren if and only if left paren" & @CRLF & _
")? # operator code, starting with 0, optinally in parentheses" & @CRLF & _
"(?(?<=\)) # if preceded by parens" & @CRLF & _
" \s*| # then dash not allowed" & @CRLF & _
" \s*-?\s* # else optional dash" & @CRLF & _
")" & @CRLF & _
"(?:" & @CRLF & _
" \d | " & @CRLF & _
" (?<=" & @CRLF & _
" \d" & @CRLF & _
" )" & @CRLF & _
" (?(sep)" & @CRLF & _
" (?P=sep)|" & @CRLF & _
" (?P<sep>[\-\/\ ])" & @CRLF & _
" ) " & @CRLF & _
" (?=" & @CRLF & _
" \d" & @CRLF & _
" )" & @CRLF & _
"){5,13}" & @CRLF & _
"\s*# some empty spaces" & @CRLF & _
"$ # end" & @CRLF & _
"#\d\d\d (?P<separator>-?) \d\d (?P=separator) \d\d $"
Local $sString = "SHOULD MATCH:" & @CRLF & _
"5344654" & @CRLF & _
" 5344654 " & @CRLF & _
"534-46-54" & @CRLF & _
"17189280121" & @CRLF & _
"+19173010176" & @CRLF & _
"(095)789-58-75" & @CRLF & _
"(095) 789-58-75" & @CRLF & _
"0957895875" & @CRLF & _
"917 229 2897" & @CRLF & _
"+38 (095) 5344654" & @CRLF & _
"53-475-34" & @CRLF & _
"555-1-333" & @CRLF & _
"1-333-484" & @CRLF & _
"888-333-4" & @CRLF & _
"(094)999-22-44" & @CRLF & _
"38-095-432-43-34" & @CRLF & _
"095-432-43-34" & @CRLF & _
"123456" & @CRLF & _
"53465" & @CRLF & _
"" & @CRLF & _
"SHOULD NOT MATCH:" & @CRLF & _
"1" & @CRLF & _
"-1234" & @CRLF & _
"38-(095)-432-43-34" & @CRLF & _
"534-46/54" & @CRLF & _
"(094)999/22-44" & @CRLF & _
"1234--567" & @CRLF & _
"(345)5345654" & @CRLF & _
"(0955344654" & @CRLF & _
"095)5345654" & @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