Avatar billede goose Nybegynder
28. juli 2005 - 17:55 Der er 6 kommentarer og
1 løsning

Validering af dato med reg.exp

Kan en give mig opskriften på en datovalidering der validerer ud fra følgende:

Datoformat skal være dd-mm-åååå
Den indtastede dato må ikke være overskredet

Dato kommer fra request.form(InputDato) og skal valideres serverside.

/Goose
Avatar billede busschou Praktikant
28. juli 2005 - 18:00 #1
du kan vel matche på udtrykket (\d\d-\d\d-\d\d\d\d)
Hvad mener du med at datoen ikke må være overskredet ?
Avatar billede busschou Praktikant
28. juli 2005 - 18:02 #2
altså reg delen
---
<%
Function RegTest(strString, strRegPattern)
  Dim regEx
  Set regEx = New RegExp
  regEx.Pattern = strRegPattern
  RegTest = regEx.Test(strString)
  Set regEx = Nothing
End Function
 
If RegTest("11-11-2005","(\d\d-\d\d-\d\d\d\d)") Then
  Response.Write "ok"
End If
%>
Avatar billede busschou Praktikant
28. juli 2005 - 18:03 #3
det tjekker formatet dd-mm-yyyy
Derudover kan du jo så lave en IsDate() for at finde ud af om det er en "rigtig" dato
Og så til sidst konvertere med CDate
Avatar billede goose Nybegynder
28. juli 2005 - 21:47 #4
Det jeg mener er, at når man skriver en dato, må den ikke være ældre end i dag.

Gider du lave eksempelet med der isdate og cdate (har aldrig brugt det) ?

/Goose
Avatar billede busschou Praktikant
28. juli 2005 - 21:57 #5
<%
' Funktiontil at køre et reg.exp på en streng
Function RegTest(strString, strRegPattern)
  Dim regEx
  Set regEx = New RegExp
  regEx.Pattern = strRegPattern
  RegTest = regEx.Test(strString)
  Set regEx = Nothing
End Function

dato = "11-11-2005"
' test om en dato har det rigtige format
If RegTest(dato,"(\d\d-\d\d-\d\d\d\d)") Then
  If IsDate(dato) Then
    dato = CDate(dato)
    If DateDiff("d",Now,dato) < 0 Then
      response.write "Datoen er ok"
    Else
      response.write "Datoen er gammel"
    End Is
  Else
    response.write "Datoen eksisterer ikke"
  End If
Else
  response.write "Du skal lave en dato i formatet dd-mm-yyyy"
End If
%>
Avatar billede busschou Praktikant
28. juli 2005 - 21:58 #6
Sådan vil jeg mene, så tester den både for formatet, for om datoen er gyldig altså at der ikke står 99-99-9999, og at datoen ikke er ældre end dags dato
Jeg er kun i tvivl om
If DateDiff("d",Now,dato) < 0 Then
måske skal være
If DateDiff("d",Now,dato) > 0 Then
For kan aldrig huske rækkefølgen :o)
Avatar billede goose Nybegynder
29. juli 2005 - 07:52 #7
Tusinde tak for det, jeg rettede det dog lige til:

If DateDiff("d",now,dato) > -1 Then

for at få muligheden for dags dato med :o)

/Goose
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester