#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)^_?[a-z0-9]+(?:[._+-][a-z0-9]+)*@(?!\d+(?:\.\d+)*$)(?:\w+(?:-\w+)*\.)+\w{2,}$"
Local $sString = "###################### Valid Emails ########################################################" & @CRLF & _
"######################## German, Austrian, international ###################################" & @CRLF & _
"" & @CRLF & _
"janedoe@web.de" & @CRLF & _
"jane.doe@web.de" & @CRLF & _
"jdoe@web.de" & @CRLF & _
"jane-doe@web.de" & @CRLF & _
"jane@web.de" & @CRLF & _
"doe@web.de" & @CRLF & _
"janed@web.de" & @CRLF & _
"doej@web.de" & @CRLF & _
"jane_doe@web.de" & @CRLF & _
"j.doe@web.de" & @CRLF & _
"jane.d@web.de" & @CRLF & _
"" & @CRLF & _
"janedoe@t-online.de" & @CRLF & _
"jane.doe@t-online.de" & @CRLF & _
"jdoe@t-online.de" & @CRLF & _
"jane-doe@t-online.de" & @CRLF & _
"jane@t-online.de" & @CRLF & _
"janed@t-online.de" & @CRLF & _
"doej@t-online.de" & @CRLF & _
"jane_doe@t-online.de" & @CRLF & _
"j.doe@t-online.de" & @CRLF & _
"jane.d@t-online.de" & @CRLF & _
"" & @CRLF & _
"janedoe@hotmail.de" & @CRLF & _
"jane.doe@hotmail.de" & @CRLF & _
"jdoe@hotmail.de" & @CRLF & _
"jane-doe@hotmail.de" & @CRLF & _
"" & @CRLF & _
"janedoe@gmx.de" & @CRLF & _
"jane.doe@gmx.de" & @CRLF & _
"jdoe@gmx.de" & @CRLF & _
"jane-doe@gmx.de" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"jane.doe@post.at" & @CRLF & _
"jane-doe@post.at" & @CRLF & _
"janedoe@post.at" & @CRLF & _
"jane@post.at" & @CRLF & _
"john.doe@austrian.com" & @CRLF & _
"horneaudrey@fulbright.at" & @CRLF & _
"email@example.web" & @CRLF & _
"" & @CRLF & _
"#####################################################################################" & @CRLF & _
"########################## Not valid email ##########################################" & @CRLF & _
".test@gmail.com" & @CRLF & _
"-test@gmail.com" & @CRLF & _
"t.-.est@gmail.com" & @CRLF & _
".test.@gmail.com" & @CRLF & _
"test.@gmail.com" & @CRLF & _
"test.@.gmail.com" & @CRLF & _
"test@.gmail.com" & @CRLF & _
"test@.gmail.com." & @CRLF & _
"test@gmail.com." & @CRLF & _
"" & @CRLF & _
""email"@example.com" & @CRLF & _
"" & @CRLF & _
"#@%^%#$@#$@#.com" & @CRLF & _
"@example.com" & @CRLF & _
"Joe Smith <email@example.com>" & @CRLF & _
"email.example.com" & @CRLF & _
"email@example@example.com" & @CRLF & _
".email@example.com" & @CRLF & _
"email.@example.com" & @CRLF & _
"email..email@example.com" & @CRLF & _
"あいうえお@example.com" & @CRLF & _
"email@example.com (Joe Smith)" & @CRLF & _
"email@example" & @CRLF & _
"email@-example.com" & @CRLF & _
"email@111.222.333.44444" & @CRLF & _
"email@example..com" & @CRLF & _
"Abc..123@example.com"
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