#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!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])"
Local $sString = "Valid email addresses" & @CRLF & _
"simple@example.com" & @CRLF & _
""user@name"@example.com" & @CRLF & _
"very.common@example.com" & @CRLF & _
"disposable.style.email.with+symbol@example.com" & @CRLF & _
"other.email-with-hyphen@example.com" & @CRLF & _
"fully-qualified-domain@example.com" & @CRLF & _
"user.name+tag+sorting@example.com (may go to user.name@example.com inbox depending on mail server)" & @CRLF & _
"x@example.com (one-letter local-part)" & @CRLF & _
"example-indeed@strange-example.com" & @CRLF & _
"test/test@test.com (slashes are a printable character, and allowed)" & @CRLF & _
"admin@mailserver1 (local domain name with no TLD, although ICANN highly discourages dotless email addresses[10])" & @CRLF & _
"example@s.example (see the List of Internet top-level domains)" & @CRLF & _
"" "@example.org (space between the quotes)" & @CRLF & _
""john..doe"@example.org (quoted double dot)" & @CRLF & _
"mailhost!username@example.org (bangified host route used for uucp mailers)" & @CRLF & _
"user%example.com@example.org (% escaped mail route to user@example.com via example.org)" & @CRLF & _
"user-@example.org (local part ending with non-alphanumeric character from the list of allowed printable characters)" & @CRLF & _
"postmaster@[123.123.123.123] (IP addresses are allowed instead of domains when in square brackets, but strongly discouraged)" & @CRLF & _
"postmaster@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334] (IPv6 uses a different syntax)" & @CRLF & _
"" & @CRLF & _
"Invalid email addresses" & @CRLF & _
"Abc.example.com (no @ character)" & @CRLF & _
"A@b@c@example.com (only one @ is allowed outside quotation marks)" & @CRLF & _
"a"b(c)d,e:f;gi[j\k]l@example.com (none of the special characters in this local-part are allowed outside quotation marks)" & @CRLF & _
"just"not"right@example.com (quoted strings must be dot separated or the only element making up the local-part)" & @CRLF & _
"this is"not\allowed@example.com (spaces, quotes, and backslashes may only exist when within quoted strings and preceded by a backslash)" & @CRLF & _
"this\ still\"not\\allowed@example.com (even if escaped (preceded by a backslash), spaces, quotes, and backslashes must still be contained by quotes)" & @CRLF & _
"1234567890123456789012345678901234567890123456789012345678901234+x@example.com (local-part is longer than 64 characters)" & @CRLF & _
"i_like_underscore@but_its_not_allowed_in_this_part.example.com (Underscore is not allowed in domain part)" & @CRLF & _
"QA[icon]CHOCOLATE[icon]@test.com (icon characters)"
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