#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?x)(?<!\d)" & @CRLF & _
" (?:" & @CRLF & _
" [0-9]{4}" & @CRLF & _
" (?:" & @CRLF & _
" (?:0[1-9]|1[0-2]) (?:0[1-9]|1[0-9]|2[0-8])" & @CRLF & _
" |(?:0[13-9]|1[0-2]) (?:29|30)" & @CRLF & _
" |(?:0[13578]|1[02]) (?:31)" & @CRLF & _
" )" & @CRLF & _
" |" & @CRLF & _
" (?:" & @CRLF & _
" [0-9]{2}" & @CRLF & _
" (?:" & @CRLF & _
" 0[48]" & @CRLF & _
" |[2468][048]" & @CRLF & _
" |[13579][26]" & @CRLF & _
" )" & @CRLF & _
" |(?:" & @CRLF & _
" 0[48]" & @CRLF & _
" |[2468][048]" & @CRLF & _
" |[13579][26]" & @CRLF & _
" )00" & @CRLF & _
" )" & @CRLF & _
" 02 (?:29)" & @CRLF & _
" )" & @CRLF & _
"(?!\d)" & @CRLF & _
""
Local $sString = "aaa_20150229_bbb" & @CRLF & _
"aaa_2012-02-29_bbb" & @CRLF & _
"aaa_2000-02-29_bbb" & @CRLF & _
"aaa_20000229_bbb" & @CRLF & _
"20000228" & @CRLF & _
"2000-2-28" & @CRLF & _
"19120229" & @CRLF & _
"19000229" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"1696-2-29" & @CRLF & _
"16960229" & @CRLF & _
"" & @CRLF & _
"20190228" & @CRLF & _
"" & @CRLF & _
"aaa_1904229_bbb" & @CRLF & _
"aaa_18000229_bbb" & @CRLF & _
"aaa_17000229_bbb" & @CRLF & _
"aaa_16000229_bbb" & @CRLF & _
"" & @CRLF & _
"2019-3-30" & @CRLF & _
"19960229" & @CRLF & _
"2019-02-28" & @CRLF & _
"20190228" & @CRLF & _
"20190229" & @CRLF & _
"" & @CRLF & _
"" & @CRLF & _
"aaa_20150130_bbb" & @CRLF & _
"aaa_20150131_bbb" & @CRLF & _
"aaa_2015-04-30_bbb" & @CRLF & _
"aaa_20150430_bbb" & @CRLF & _
"20190228" & @CRLF & _
"20190229" & @CRLF & _
"20200229" & @CRLF & _
"20000229" & @CRLF & _
"2000-02-29" & @CRLF & _
"2000-02-28" & @CRLF & _
"" & @CRLF & _
"201911"
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