#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mix)(20[0-9]{2}\-((?=0[1-9])0[1-9]|(?=1[0-2])1[0-2])" & @CRLF & _
"\-((?=0[1-9])0[1-9]|(?=[1-2][0-9])[1-2][0-9]|(?=[3][0-1])[3][0-1])" & @CRLF & _
"|(all))"
Local $sString = "2018-09-10" & @CRLF & _
"2018-11-20" & @CRLF & _
"2018-09-01" & @CRLF & _
"2018-12-01" & @CRLF & _
"ALL" & @CRLF & _
"" & @CRLF & _
"2018-12-99" & @CRLF & _
"2018-99-20" & @CRLF & _
"2018-39-20" & @CRLF & _
"2018-39-39" & @CRLF & _
"2018-39-19" & @CRLF & _
"2018-00-99" & @CRLF & _
"9999-00-99" & @CRLF & _
"2000-00-99" & @CRLF & _
"2099-00-00" & @CRLF & _
"All" & @CRLF & _
"all" & @CRLF & _
"xxx"
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