webForumDet fria alternativet

Kontrollera datum

Webbutveckling

2 svar · 269 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Jag har en ArrayList med en massa strängar i och när jag loopar ut så kollar jag om det finns datum med hjälp av följande regex.

^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-9]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])))))?$

Förmodligen har jag gjort något fel i den för ibland får jag upp att den inte kan konvertera till datetime fastän min regex godkänner den.
Formatet som den ska hitta är typ "2006-12-07 17:14:48" eller "2006/12/07"

Någon som ser vad jag har gjort för fel?

Medlem sedan juni 2002256 inlägg
#2

Varför inte prova använda DateTime.TryParse()?

//Edit
Haha, vilka slutsatser jag drar. Inte alls säkert du skriver i .NET, fick för mig att tråden låg i .NET-forumet bara.
Sorry mig... :r

Medlem sedan dec. 20025 483 inlägg
#3

Beroende på hur petig du vill vara

^(?:\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])(?: (?:[01]\d|2[0-3]):(?:[0-5]\d):(?:[0-5]\d))?)|(?:\d{4}/(?:0[1-9]|1[0-2])/(?:0[1-9]|[12]\d|3[01]))$

Skottår och {30,31}/2 kollas t.ex. ej.

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)