Om en sträng består av enbart blanksteg eller ett datum är det ok, annars är det fel. Du lägger till <b>| *</b> i slutet Verkar inte fungera. Den släpper igenom både "foo " och "foo". Problemet är att "| *" returnerar att den hittar matches alltid. "| *" innebär "någongting som innehåller ingen eller flera mellanslag" vilket är alla strängar...prova: För att gå ännu ett steg längre kommer din datumkontroll att gå igenom om man skriver något i stil med Det är sant... Snyggt fångat. Missade det. Var väl för insnöad på att kolla mellanslag och datum för att kolla kombinationen...Hjälp med Regular Expression
Hur undersöker jag det med ett RegEx?
Att undersöka datum användare jag
((19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01]))
men hur får jag in "eller enbart blanksteg"? Sv: Hjälp med Regular Expression
((19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01]))<b>| *</b>Sv:Hjälp med Regular Expression
Alltså:
"2007-11-04" = ok
" " = ok
"foo" = ej ok
" foo" = ej ok
"foo " = ej ok
" foo " = ej okSv: Hjälp med Regular Expression
(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])|^ *$
Den använder dins sträng för datum och sedan säger "eller en sträng som bara innehåller ingen eller flera mellanslag" dvs "start, noll eller flera mellanslag och sedan ett slut...Sv: Hjälp med Regular Expression
" test 2007-01-01 hoho".
För att korrigera att den accepterar datum eller noll till många mellanslag ska det se ut så här
<code>
^(?:(19|20)\d\d([- /\.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])| *)$
</code>Sv:Hjälp med Regular Expression