#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)^([a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$"
Local $sString = "--------- valid ---------" & @CRLF & _
"something@something.com" & @CRLF & _
"someone@localhost.localdomain" & @CRLF & _
"someone@127.0.0.1" & @CRLF & _
"a@b.b" & @CRLF & _
"a/b@domain.com" & @CRLF & _
"{}@domain.com" & @CRLF & _
"m*'!%@something.sa" & @CRLF & _
"tu!!7n7.ad##0!!!@company.ca" & @CRLF & _
"%@com.com" & @CRLF & _
"!#$%&'*+/=?^_`{|}~.-@com.com" & @CRLF & _
"USER@EXAMPLE.COM" & @CRLF & _
"someone@do-ma-in.com" & @CRLF & _
"a@p.com" & @CRLF & _
"" & @CRLF & _
"-------- invalid --------" & @CRLF & _
"somebody@example" & @CRLF & _
" a@p.com" & @CRLF & _
".wooly@example.com" & @CRLF & _
"wo..oly@example.com" & @CRLF & _
"invalid:email@example.com" & @CRLF & _
"@somewhere.com" & @CRLF & _
"example.com" & @CRLF & _
"@@example.com" & @CRLF & _
"a space@example.com" & @CRLF & _
"something@ex..ample.com" & @CRLF & _
"a\b@c" & @CRLF & _
"----- empty string ----" & @CRLF & _
"" & @CRLF & _
"-------- space --------" & @CRLF & _
" " & @CRLF & _
"someone@somewhere.com." & @CRLF & _
"\"\"test\blah\"\"@example.com" & @CRLF & _
"\"testblah\"@example.com" & @CRLF & _
"someone@somewhere.com@" & @CRLF & _
"someone@somewhere_com" & @CRLF & _
"someone@some:where.com" & @CRLF & _
"." & @CRLF & _
"F/s/f/a@feo+re.com" & @CRLF & _
"some+long+email+address@some+host-weird-/looking.com" & @CRLF & _
"a @p.com" & @CRLF & _
"a\u0020@p.com" & @CRLF & _
"a\u0009@p.com" & @CRLF & _
"a\u000B@p.com" & @CRLF & _
"a\u000C@p.com" & @CRLF & _
"a\u2003@p.com" & @CRLF & _
"a\u3000@p.com" & @CRLF & _
"ddjk-s-jk@asl-.com" & @CRLF & _
"someone@do-.com" & @CRLF & _
"somebody@-p.com" & @CRLF & _
"somebody@-.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