On Tue, 2004-06-01 at 11:05, Allen, Greg wrote: > Think it might be bust when year contains a 9. > > e.g. year = 2009 > > $c = 9+1 = 10
Indeed... :-) Should have tested more :-) > qr/^\d*(?:${1}${2}${3}[$c-9]... > is: > qr/^\d*(?:200[10-9]... > > and [10-9] matches any digit, so 2000, 2001 etc. would incorrectly pass. > > Greg > > > -----Original Message----- > From: Jose Alves de Castro [mailto:[EMAIL PROTECTED] > Sent: Tuesday, June 01, 2004 10:53 AM > To: [EMAIL PROTECTED] > Subject: Regular expression for years after a given one > > > Yesterday, a friend of mine was toying around with some Perl code, when > he got to a function which would only accept a regular expression. He > said: > > "How can I say that I want every single year after the one I have? It's > impossible..." > > To which I replied: > > "Nothing is impossible! Especially in Perl! ;-) " (ok, maybe these > weren't my words at the time, but they seem cool now, right? :-) ) > > So after a couple of minutes, this is what I came up with: > > > $year = 2004; # I'm stating it directly to improve clarity > > $year =~/(\d)(\d)(\d)(\d)/; > > ($c,$d,$e,$f) = ($4+1,$3+1,$2+1,$1+1); > > $regex = > qr/^\d*(?:${1}${2}${3}[$c-9]|${1}$2[$d-9]\d|$1[$e-9]\d{2}|[$f-9]\d{3})$/; > > > and that does the trick :-) > > Thought I should share this with you guys :-) Thoughts are welcome :-) > > > BTW: This was made so it would work with $year consisting of four > digits... any care to make it generic? :-) > > > Regards, > > jac -- Josà Alves de Castro <[EMAIL PROTECTED]> Telbit - Tecnologias de InformaÃÃo