Avatar billede kamak Praktikant
23. september 2008 - 12:56 Der er 12 kommentarer og
2 løsninger

regular expression

Jeg skal undersøge om indholdet af en string overholder følgende format: 2 tal bindestreg 2 tal bindestreg 4 tal.
Eksempler på gyldige strenge er f.eks: "24-12-2008", 23-09-2008", "01-01-2009" osv

Jeg har forsøgt mig med følgende regulære udtryk: [0-9]{2}
  • [0-9]{2}[-][0-9]{4} men det tillader strenge som "111-111-111111".

Til interessede ser min kode sådan ca. sådan ud:

string strRegex = @"[0-9]{2}
  • [0-9]{2}[-][0-9]{4}";
Regex re = new Regex(strRegex);
if (re.IsMatch(inputDate))
return (true);
else
return (false);
Avatar billede aaberg Nybegynder
23. september 2008 - 13:00 #1
Hvad med:

\d\d-\d\d-\d\d\d\d
Avatar billede w13 Novice
23. september 2008 - 13:02 #2
Jeg har løst det med:

/^(3[01]|[012]\d)[\-\/\.](1[012]|0\d)[\-\/\.]\d{1,4}$/gi
Avatar billede aaberg Nybegynder
23. september 2008 - 13:03 #3
Hvis det er en dato du prøver at matche, så kan du bruge denne her:

(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(19|20)\d\d

Den tager højde for, at der er maks 31 dage i en måned, og at der er 12 dage i et år. Og den tillader kun år mellem 1900 og 2099.
Avatar billede aaberg Nybegynder
23. september 2008 - 13:05 #4
Derudover kan jeg anbefale følgende side som regex reference. Der er også flere eksempler:

http://www.regular-expressions.info/
Avatar billede kamak Praktikant
23. september 2008 - 13:11 #5
aaberg_cc: dit andet forslag sad lige i øjet.
mange tak for det, hvis du lige laver et svar :-)
Avatar billede kalp Novice
23. september 2008 - 13:12 #6
Hvis du skal tjekke om dato'en er valid, så vil jeg slet ikke anbefale regexp i denne sammenhæng når du kan benytte .NET framework'et til det.

string testDate = "24-12-2008";
DateTime parsedDate;
bool successMatch = DateTime.TryParseExact(testDate, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None, out parsedDate);
       
successMatch vil være true hvis formattet er korrekt.
parsedDate vil indholde din dato i en DateTime structor.

Du kan også nøjes med følgende hvis du blot vil tjekke for om dato'en er gyldig uden og tage hensyn til format.

string testDate = "24-12-2008";
DateTime parsedDate;
bool successMatch = DateTime.TryParseExact(testDate, out parsedDate);
Avatar billede aaberg Nybegynder
23. september 2008 - 13:19 #7
:-)
Avatar billede kamak Praktikant
23. september 2008 - 13:22 #8
kalp: cool - ja det virker ligeså godt, og er måske pænere. Hvis du også laver et svar kan I dele pointene.
Avatar billede kamak Praktikant
23. september 2008 - 13:22 #9
nu spurgte jeg jo specifikt efter et regulært udtryk så aaberg får 30 og kalp 15 :-)
Avatar billede aaberg Nybegynder
23. september 2008 - 13:26 #10
Hellere del pointsne lige over, for kalp har helt ret i at hans foreslag er bedre. Hans foreslag tager også højde for om der er 30 eller 31 dage på en måned samt skudår, og alle mulige datospecifikke ting.
Avatar billede kamak Praktikant
24. september 2008 - 10:36 #11
hey kalp :-) laver du et svar
Avatar billede kalp Novice
28. september 2008 - 10:22 #12
:D - sorry.. er på ferie derford et sene svar:)
Avatar billede kalp Novice
28. september 2008 - 10:24 #13
og rettelse til mig selv fra tidligere..

Du kan også nøjes med følgende hvis du blot vil tjekke for om dato'en er gyldig uden og tage hensyn til format.

string testDate = "24-12-2008";
DateTime parsedDate;
bool successMatch = DateTime.TryParseExact(testDate, out parsedDate);

************ TIL

Du kan også nøjes med følgende hvis du blot vil tjekke for om dato'en er gyldig uden og tage hensyn til format.

string testDate = "24-12-2008";
DateTime parsedDate;
bool successMatch = DateTime.TryParse(testDate, out parsedDate);
Avatar billede kamak Praktikant
29. september 2008 - 08:38 #14
no problem amigo - fortsat go ferie og tak for hjælpen
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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