#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)^(?:(52\-)|(1\-))?(\()?(?(1)[0-9]{2,3}|[2-9][0-9]{2})(?(3)\)\s?|(\-|[.]|\s|))(?(1)[0-9]|[2-9])[0-9]{2}(?(4)\4|(?:\-|[.]|\s)?)[0-9]{4}(\s?(?:x|ext|ext.|extension|Ext|Ext.|Extension|#)\s?[0-9]+)?$"
Local $sString = "Regular valid formats" & @CRLF & _
"" & @CRLF & _
"225-586-7777" & @CRLF & _
"(223)249-4444" & @CRLF & _
"(223) 234-3344" & @CRLF & _
"223.456.2222" & @CRLF & _
"2253451111" & @CRLF & _
"223 334 4444" & @CRLF & _
"" & @CRLF & _
"1-325-586-7777" & @CRLF & _
"1-(923)249-4444" & @CRLF & _
"1-(923) 234-3344" & @CRLF & _
"1-923.456.2222" & @CRLF & _
"1-9253451111" & @CRLF & _
"1-923 234 4444" & @CRLF & _
"" & @CRLF & _
"52-125-586-7777" & @CRLF & _
"52-(123)249-4444" & @CRLF & _
"52-(123) 234-3344" & @CRLF & _
"52-123.456.2222" & @CRLF & _
"52-1253451111" & @CRLF & _
"52-123 134 4444" & @CRLF & _
"" & @CRLF & _
"Valid formats with extensions" & @CRLF & _
"" & @CRLF & _
"1-800-661-3696 x14700" & @CRLF & _
"1-800-661-3696x14700" & @CRLF & _
"1-800-661-3696 Extension 14700" & @CRLF & _
"1-800-661-3696 ext14700" & @CRLF & _
"" & @CRLF & _
"325-586-7777 x123" & @CRLF & _
"(323)249-4444x123" & @CRLF & _
"(323) 234-3344 Ext 123" & @CRLF & _
"323.456.2222 ext 124" & @CRLF & _
"3253451111ext. 123" & @CRLF & _
"323 334 4444extension234" & @CRLF & _
"(223)456 7891 x 123" & @CRLF & _
"(223)456 7891 ext 123" & @CRLF & _
"(223)456 7891 ext. 123" & @CRLF & _
"(223)456 7891 Ext 123" & @CRLF & _
"(223)456 7891 Ext. 123" & @CRLF & _
"(910)456-8970 x12" & @CRLF & _
"(910)456-8970 #12" & @CRLF & _
"(910)456-8970 extension12456" & @CRLF & _
"(910)456-8970 Extension 12456" & @CRLF & _
"" & @CRLF & _
"Invalid formats" & @CRLF & _
"" & @CRLF & _
"444000-1111" & @CRLF & _
"444-0001111" & @CRLF & _
"444.000-1111" & @CRLF & _
"444000 1111" & @CRLF & _
"444 0001111" & @CRLF & _
"444 000.1111" & @CRLF & _
"444.0001111" & @CRLF & _
"444000.1111" & @CRLF & _
"444-000.1111" & @CRLF & _
"(4440001111" & @CRLF & _
"444)0001111" & @CRLF & _
"440001111" & @CRLF & _
"444000111111" & @CRLF & _
"" & @CRLF & _
"125-586-7777" & @CRLF & _
"(123)249-4444" & @CRLF & _
"(123) 234-3344" & @CRLF & _
"123.456.2222" & @CRLF & _
"1253451111" & @CRLF & _
"123 134 4444" & @CRLF & _
"" & @CRLF & _
"125-586-7777" & @CRLF & _
"(123)249-4444" & @CRLF & _
"(123) 234-3344" & @CRLF & _
"123.456.2222" & @CRLF & _
"1253451111" & @CRLF & _
"123 134 4444" & @CRLF & _
"" & @CRLF & _
"Invalid formats with extensions" & @CRLF & _
"" & @CRLF & _
"12-125-586-7777" & @CRLF & _
"12-(123)249-4444" & @CRLF & _
"12-(123) 234-3344" & @CRLF & _
"12-123.456.2222" & @CRLF & _
"12-1253451111" & @CRLF & _
"12-123 134 4444" & @CRLF & _
"" & @CRLF & _
"12-444000-1111" & @CRLF & _
"12-444-0001111" & @CRLF & _
"12-444.000-1111" & @CRLF & _
"12-444000 1111" & @CRLF & _
"12-444 0001111" & @CRLF & _
"12-444 000.1111" & @CRLF & _
"12-444.0001111" & @CRLF & _
"12-444000.1111" & @CRLF & _
"12-444-000.1111" & @CRLF & _
"12-(4440001111" & @CRLF & _
"12-444)0001111" & @CRLF & _
"12-440001111" & @CRLF & _
"12-444000111111" & @CRLF & _
"" & @CRLF & _
"1-888-720-1275 x2 x2" & @CRLF & _
"1-888-720-1275 2" & @CRLF & _
"1-888-720-1275 x" & @CRLF & _
"1-888-720-1275 Ext" & @CRLF & _
"888-720-1275x" & @CRLF & _
"" & @CRLF & _
"1-444000-1111" & @CRLF & _
"1-444-0001111" & @CRLF & _
"1-444.000-1111" & @CRLF & _
"1-444000 1111" & @CRLF & _
"1-444 0001111" & @CRLF & _
"1-444 000.1111" & @CRLF & _
"1-444.0001111" & @CRLF & _
"1-444000.1111" & @CRLF & _
"1-444-000.1111" & @CRLF & _
"1-(4440001111" & @CRLF & _
"1-444)0001111" & @CRLF & _
"1-440001111" & @CRLF & _
"1-444000111111"
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