Hej allihopa, Det är kanske inte smartast att göra datum-validering med Regex.Kontrollera så att ett datum är giltigt...
Jag har en textbox där användaren ska fylla i ett datum. Jag har styrt användaren (genom <asp:regularexpressionvalidator id="datumkoll" runat="server" ControlToValidate="txtDatum" ValidationExpression="^\d{4}-\d{2}-\d{2}$" CssClass="formtext" Text="Du har skrivit fel format på datumet" />
) att skriva datumet i formatet fyra siffror - två siffror - två siffror.
Men om nu användaren skriver in 2005-89-78 så är det ju inte giltigt. Och då reagerar ju inte kontrollern men man får ändå ett meddelande när man trycker på OK.
Finns det något bra sätt att kontrollera så att månadsiffrorna är endast mellan 1 och 12 samt att veckodagen är mellan 1 och 31?
//mvh Björn
Sv: Kontrollera så att ett datum är giltigt...
Datum-validering bör ju utgå från en kalender. T.ex. även 2006-02-30 är ju ett felaktigt datum.
Februari har 28 dagar, dvs. när det inte är skottår. Det blir ett ganska besvärligt Regex.
Därför enklare att du med kod testar att konvertera till ett korrekt datum.
Här är ett script som testar datum (input: dag, månad, år)
function checkdate(d,m,y)
{
var yl=1990; // least year to consider
var ym=2010; // most year to consider
if (m<1 || m>12) return(false);
if (d<1 || d>31) return(false);
if (y<yl || y>ym) return(false);
if (m==4 || m==6 || m==9 || m==11)
if (d==31) return(false);
if (m==2)
{
var b=parseInt(y/4);
if (isNaN(b)) return(false);
if (d>29) return(false);
if (d==29 && ((y/4)!=parseInt(y/4))) return(false);
}
return(true);
}