Quella espressione regolare valida questa cosa

1022031-10110-0000

che non mi pare una data

io uso questo controllo
<asp:CompareValidator ID="cv_data" runat="server" ControlToValidate="c_data" ErrorMessage="il campo Data non è una data valida" ToolTip="il campo Data non è una data valida" Operator="DataTypeCheck" Text="*" Type="Date" CssClass="text_error help" Display="Static" />

che mi ha sempre funzionato.

ma se vuoi utilizzare una espressione regolare, prova questa

^((3[01]|[12]\d|0?[1-9])\/(0?[13578]|10|12)\/(\d\d)?\d\d|(30|[12]\d|0?[1-9])\/(0?[469]|11)\/(\d\d)?\d\d|(2[0-8]|[01]\d|0?[1-9])\/(0?2)\/(\d\d)?\d\d|29\/(0?2)\/(1200|1600|2000|2400|2800|00)|29\/(0?2)\/(\d\d)?(0[48]|[2468][048]|[13579][26]))$