Gsulinux wrote at Sat, 27 Jul 2002 13:32:27 +0200:

> I wanna check the information typed in the form field whether if it is in date 
>format or not .
> Like : check it if it is in format day/mount/year , in format like ab/cd/ef or 
>ab/cd/efgh "ab"
> must be valid like between 1-31
> "cd" must be valid between 1-12 or must be a string that exist in an array that i 
>define, for
> exemple A[12] "ef" must be valid like between 00-99 or "efgh" between 1900-2010
> 
> In second part i wanna get the month in a variable, i mean "cd" to a variable , "cd" 
>can be either
> a numeric value or a string

There's no real difference between a numeric value and a string in Perl.
There's only a difference in the context using the values.
E.g.

03   == 3 # but
"03" ne "3"

> 
> Can u help me writing that regular exp.?!?

What have you tried so far ?

In the most cases,
it's enough to say

my ($day, $month, $year) = m:(\d\d)/(\d\d)/(\d\d):;  # to match ab/cd/ef
my ($day, $month, $year) = m:(\d\d)/(\d\d)/(\d{4}):; # to match ab/cd/efgh

and ignoring the constraints for a day, month, year.

of course,
you can also build complicate regexes like

my $day_re   = qr/\d | [012]\d | 3[01]/x;
my $month_re = qr/\d | 0\d | 1[012]/x;
my $year_re  = qr/19\d\d | 200\d | 2010/x;

and then write
my ($day, $month, $year) = m:($day_re)/($month_re)/($year_re):;

But note that it doesn't mean to be a valid date,
as 30/02/1997 isn't valid at least.
Best is, as already mentioned of Fliptop to use one of
the many Date::* modules


Best Wishes,
Janek


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to