My way (non il modo sano di mente)
(((\d{4})(0[13578]|10|12)(0[1-9]|[12][0-9]|3[01]))|((\d{4})(0[469]|11)(0[1-9]|[12][0-9]|30))|((\d{4})(02)(0[1-9]|1[0-9]|2[0-8]))|([0-9][0-9][02468]40229)|([0-9][0-9][02468]80229)|([0-9][0-9][13579]20229)|([0-9][0-9][13579]60229)|([0-9][0-9][02468]00229))
Con vb.net (più facile da capire, penso di sì)
Dim meses31 As String = "((\d{4})(0[13578]|10|12)(0[1-9]|[12][0-9]|3[01]))"
Dim meses30 As String = "((\d{4})(0[469]|11)(0[1-9]|[12][0-9]|30))"
Dim febrero28 As String = "((\d{4})(02)(0[1-9]|1[0-9]|2[0-8]))"
Dim febrero29 As String = "([0-9][0-9][02468]40229)|([0-9][0-9][02468]80229)|([0-9][0-9][13579]20229)|([0-9][0-9][13579]60229)|([0-9][0-9][02468]00229)"
Dim patternFecha As String = String.Concat("(", meses31, "|", meses30, "|", febrero28, "|", febrero29, ")")
Non ha intenzione di essere possibile escludere '2/29' se non si tratta di un anno bisestile con espressioni regolari. Almeno non in modo sano. Dovrai analizzarlo dopo il fatto. C'è un problema con '\ d {8}'? O almeno '20 \ d {2} [01] \ d [0123] \ d'? –
@JoeWang Che lingua stai usando? C++ ha la funzionalità per fare questo built-in, senza l'uso di un regex –
ahh ... come si può ottenere questo ... basta fare una ricerca di 5 minuti su ciò che è ti permetterà di essere in grado di escludere questa possibilità. – HuStmpHrrr