#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mi)(?:^(\w{1,255}):(.{1,255})@|^)(?:(?:(?=\S{0,253}(?:$|:| ))((?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+(?:[a-z0-9]{1,63})))|localhost)(:\d{1,5})?"
Local $sString = "Valid localhost addresses:" & @CRLF & _
"localhost" & @CRLF & _
"user:password@localhost:80" & @CRLF & _
"localhost:8080/path/to/page.html" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"Valid IPv4 addresses:" & @CRLF & _
"10.10.0.1 " & @CRLF & _
"192.168.0.1 " & @CRLF & _
"192.168.0.1:8888 " & @CRLF & _
"user:password@192.168.0.1:8888 " & @CRLF & _
"user:password@192.168.0.1" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"Valid IPv6 addresses: // regex does not check for that, check here: http://vernon.mauery.com/content/projects/linux/ipv6_regex" & @CRLF & _
"" & @CRLF & _
"100::" & @CRLF & _
"100::ffff:ffff:ffff:ffff" & @CRLF & _
"::ffff:0.0.0.0" & @CRLF & _
"64:ff9b::0.0.0.0" & @CRLF & _
"ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff" & @CRLF & _
"fe80::" & @CRLF & _
"2001:2f:ffff:ffff:ffff:ffff:ffff:ffff" & @CRLF & _
"2001:db8::" & @CRLF & _
"::1" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"Valid domains: // all should work" & @CRLF & _
"www.test.com" & @CRLF & _
"www1.test.com" & @CRLF & _
"www1.test.com:8080 " & @CRLF & _
"test.com" & @CRLF & _
"test-test.com" & @CRLF & _
"test.com/path/to/page?var=1&var2=2" & @CRLF & _
"test.com:80" & @CRLF & _
"user:password@test.com" & @CRLF & _
"user:password@test-test.com" & @CRLF & _
"user:password@test.com/path/to/page" & @CRLF & _
"user:password@test.com/path/to/page?var=1&var2=2" & @CRLF & _
"user:password@test.com:80" & @CRLF & _
"user:password@test.com:80/path/to/page?var=1&var2=2" & @CRLF & _
"Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.com" & @CRLF & _
"user:password@Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.com" & @CRLF & _
"user:password@Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.com:8080" & @CRLF & _
"Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.MaximumLengthOf63CharactersForATopLevelDomainWithoutTheDashes" & @CRLF & _
"Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.MaximumLengthOf63CharactersForATopLevelDomainWithoutTheDashes:8888" & @CRLF & _
"user:password@Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.Maximum-Length-Of-63-Characters-For-A-Subdomain-Completely-Used.MaximumLengthOf63CharactersForATopLevelDomainWithoutTheDashes:8888" & @CRLF & _
"a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a // Maximum number of 127 suddomains, seperated by 126 dots" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"Invalid domains: // should not work" & @CRLF & _
"justLongGibberishBLABLABLA " & @CRLF & _
"againButThisTimeWithNumbers12345675678797 " & @CRLF & _
"ShouldNOTWorkBecauseOfTheDash-.com" & @CRLF & _
"UrlLenghtIsValidButThisSubdomainIsTooLongMaximumForASubdomainIs63Characters.com " & @CRLF & _
"This-Url-Has-Valid-Subdomains.But-The-Url-Length-In-General-Is-Too-Long.This-Means-Longer-Than-253-Characters-For-The-Complete-Url.Including-The-Top-Level-Domain-Itself.So-This-Line-Shouldnt-Be-Catched-By-The-Regex.Its-Exactly-One-Character-Too-Long1.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