test na cislo
Jiri Polcar
polcar na physics.muni.cz
Čtvrtek Říjen 24 16:48:38 MEST 2002
On Thu, Oct 24, 2002 at 04:42:04PM +0200, Marian Cavojsky wrote:
> On Thu, Oct 24, 2002 at 04:31:54PM +0200, Marian Cavojsky wrote:
> > On Thu, Oct 24, 2002 at 04:29:15PM +0200, Marian Cavojsky wrote:
> > > On Thu, Oct 24, 2002 at 03:30:17PM +0200, Jiri Polcar wrote:
> > > > On Thu, Oct 24, 2002 at 02:12:32PM +0200, Honza Pazdziora wrote:
> > > > > On Thu, Oct 24, 2002 at 02:07:24PM +0200, Jiri Polcar wrote:
> > > > > >
> > > > > > Pokud udelam,
> > > > > >
> > > > > > $min = '3231g42';
> > > > > >
> > > > > > {
> > > > > > local $^W = 0;
> > > > > > $min += 0;
> > > > > > }
> > > > > >
> > > > > > bude v $min `3231'. To ovsem meni to, co uzivatel zada. Ten zadal
> > > > >
> > > > > Stale jste nerekl, co je to, co uzivatel z^a'da'.
> > > >
> > > > Uzivatel z^a'da', aby kdyz zada cislo v libovolnem prijatelnem tvaru,
> > > > tak aby bylo akceptovano, pouzito pri vypoctu, ...
> > > > Naopak, pokud zada vec, ktera neni cislem, aby o tom byl zpraven a
> > > > vypocet se neprovedl.
> > > >
> > > > Z chovani perlu pri (napr.) scitani je jasne, ze perl vi (umi poznat),
> > > > jestli to cislo je nebo neni, takze pouzivani regularnich vyrazu pro
> > > > test znamena duplikaci prace, kterou uz perl udelal. Jde o to, jak z
> > > > nej tu informaci dostat.
> > > >
> > >
> > > /^-?\d+(.\d+)?([e|E][+|-]\d+)?$/
> > >
> > Samozrejme, ze je tam chyba.
> >
> > /^-?\d+(\.\d+)?([e|E][+|-]\d+)?$/
> >
> Posledna uprava:
>
> /^[+|-]?\d+(.\d+)?([e|E][+|-]?\d+)?$/
No, neproleze napriklad:
.3
-3.e+43
Vylepsil jsem to na:
/^-?\d*(\.\d*)?(E[+|-]?\d+)?$/i
potiz je v tom, ze proleze i
.e2
na coz Perl pri numerickem vyhodnocovani hodi warning. To je prave ta
zakernost RE, ktere jsem se chtel vyhnout.
--
JP
Další informace o konferenci Perl