#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)(?:\.?)([\w\-_+#~!$&\'\.]+(?<!\.)@(?<!\.)[\w]+[\w\-\.]*\.[a-zA-Z-]{2,3})(?:[^\w])"
Local $sString = "VALID EMAILS:" & @CRLF & _
"" & @CRLF & _
"davida@yahoo.com, davida-100@yahoo.com, davida.100@yahoo.com, davida111@davida.com, davida-100@davida.net, davida.100@davida.com.au, davida@1.com, davida@gmail.com.com, davida+100@gmail.com, davida-100@yahoo-test.com valid special char ~@davidalberto.com hey@ucl.ac.uk, "this..one"@gmail.com, h.e.y@gmail.com, " & @CRLF & _
"" & @CRLF & _
"the "." at the start should be ignored .davida@davida.com," & @CRLF & _
"suffix should be ignored davida@gmail.com.1a" & @CRLF & _
"prefix should be ignored davida@davida@gmail.com," & @CRLF & _
"" & @CRLF & _
"INVALID EMAILS:" & @CRLF & _
"" & @CRLF & _
"davida, davida@.com.my, davida123.@gmail.a, davida123@gmail.a, davida123@.com, davida123@.com.com, davida()*@gmail.com, davida@%*.com, davida.@gmail.com, " & @CRLF & _
"tld is too long davida@gmail.comnnnnnnnn " & @CRLF & _
"" & @CRLF & _
"INVALID EMAILS - TODO:" & @CRLF & _
"" & @CRLF & _
"adjacent "." should not be valid davida..2002@gmail.com" & @CRLF & _
"some images a@bg.png 1x@cover.gif" & @CRLF & _
"" & @CRLF & _
"HIDDEN EMAILS:" & @CRLF & _
"" & @CRLF & _
"somethingatgmail.com " & @CRLF & _
"something at gmail.com something AT gmail.com " & @CRLF & _
"asdf ( at ) gmail.com yoooo (at) gmail.com" & @CRLF & _
"" & @CRLF & _
"HIDDEN EMAILS - TODO:" & @CRLF & _
"" & @CRLF & _
"this at that dot com" & @CRLF & _
"this [at] that [dot] com" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"-----" & @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