#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?im)^(?:(?:[_a-z0-9](?:[_a-z0-9-]{0,61}[a-z0-9])?|[0-9]{1,3}?/[0-9]{2})\.)+(?:[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?)?$"
Local $sString = "This regexp can be used to validate domain names in Golang." & @CRLF & _
"While it cannot enforce the 253 character limit (with optional trailing period not included)" & @CRLF & _
"that can be easily done with a `len(domain) <= 253` check." & @CRLF & _
"" & @CRLF & _
"This can be used as-is in other languages, even with RE2 regex engine." & @CRLF & _
"Non-capturing groups are used." & @CRLF & _
"Example validated domains (some may be invalid per TLD rules):" & @CRLF & _
"" & @CRLF & _
"example.com" & @CRLF & _
"_25._tcp.SRV.example" & @CRLF & _
"a.punycoded-idna.xn--zckzah" & @CRLF & _
"under_score.example" & @CRLF & _
"0/27.0.0.1.in-addr.arpa" & @CRLF & _
"128/32.255.255.123.in-addr.arpa" & @CRLF & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa." & @CRLF & _
"" & @CRLF & _
"Example invalid domains:" & @CRLF & _
"" & @CRLF & _
"192.0.2.1" & @CRLF & _
"has spaces.com" & @CRLF & _
"easy,typo.example" & @CRLF & _
"23/1.invalid" & @CRLF & _
"domain\.escapes.invalid" & @CRLF & _
"trailing_.underscore.invalid" & @CRLF & _
"-leading.hyphens.invalid" & @CRLF & _
"trailing-.hyphens.invalid" & @CRLF & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & @CRLF & _
"" & @CRLF & _
"TLDs have more validation, the following will not validate:" & @CRLF & _
"" & @CRLF & _
"a" & @CRLF & _
"example" & @CRLF & _
"digit.1example" & @CRLF & _
"underscore._example_com" & @CRLF & _
"" & @CRLF & _
"but with a trailing period, the same rules as non-TLD are applied:" & @CRLF & _
"" & @CRLF & _
"a." & @CRLF & _
"example." & @CRLF & _
"digit.1example." & @CRLF & _
"underscore._example_com." & @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