I already tried it, and it is backward compatible. The thing about Perl5Util
is it provides a convinience method
of match(value, pattern) which creates a Perl5Compiler, builds a cache of
compiled patterns and calls the Perl5Matcher.contains()
method. There isn't an equivalent convinience method that calls the
Perl5Matcher.matches() method.

Replacing:
boolean match = Perl5Util.match(value, pattern)

requires:

Perl5Compiler compiler = new Perl5Compiler();
Pattern compiledPattern = compiler.compile(pattern);
Perl5Matcher matcher   = new Perl5Matcher();
boolean match = matcher.matches(value, compiledPattern);

But then, it would be less efficient as the pattern is being compiled every
time. It would be
straight forward to do the equivalent of Perl5Util and create a cache.

I might have a look at this later and submit a patch to Commons.

Niall

----- Original Message ----- 
>  "David Graham" <[EMAIL PROTECTED]> wrote:
>
> --- Niall Pemberton <[EMAIL PROTECTED]> wrote:
> > Hey thanks for your help - what you suggested worked (i.e. using
> > "^[\d,]*$") - I was using the ORO demo, but if you don't put the right
> > stuff
> > in....:-)
> >
> > OK, I'm picking up regex slowly - so this works because ^ is for the
> > beginning of a line and % is for the end of a line.
>
> I think you meant $ instead of % but yes that's correct.
>
> >
> > Apologies for the "doesn't work" slander then - but wouldn't it be
> > better to
> > use Perl5Matcher.matches(value, pattern) and then there would be no need
> > to
> > specify the ^ and $ characters at the start and end - simpler and less
> > confusing?
> >
> > This could be done and would be backward compatible.
>
> I really haven't looked at the differences between matches() and
> contains() so I don't know if it's backwards compatible.  You could try
> changing it and let us know what happens.
>
> David
>
> >
> > Niall
> >
> >
> >
> > ----- Original Message ----- 
> > From: "David Graham" <[EMAIL PROTECTED]>
> > To: "Struts Developers List" <[EMAIL PROTECTED]>
> > Sent: Friday, January 16, 2004 1:39 PM
> > Subject: Re: Validating Formatted Numbers Patch [Bugzilla 26151]
> >
> >
> > >
> > > --- Niall Pemberton <[EMAIL PROTECTED]> wrote:
> > > > Graham
> > > >
> > > > OK, I decided to look further into your suggestion, but didn't get
> > very
> > > > far
> > > > and I think its because mask doesn't work.
> > >
> > > I know it works because I use it in my apps :-).
> > >
> > > >
> > > > I started with a simple expression of [\d,]*  to validate that the
> > input
> > > > only contains numbers or a comma. Whatever I input though validator
> > > > always
> > > > passed it as valid.
> > >
> > > ORO's test applet is really helpful when testing regexs.  Try putting
> > ^ at
> > > the front and $ at the end of the pattern.  ORO seems to need these to
> > > work properly unlike Java 1.4 regexs.
> > >
> > > David
> > >
> > > >
> > > > Looking into validator it uses Perl5Util.match(pattern, value)
> > > >
> > > > This utility uses the Perl5Matcher.contains(value, pattern) method
> > which
> > > > only checks that the value contains the pattern - not that matches
> > (it
> > > > says
> > > > so in the Perl5Util documentation).
> > > >
> > > > Isn't this the wrong thing to do - shouldn't validator be using the
> > > > Perl5Matcher.matches(value, pattern) method. I had a look at commons
> > > > validator test thinking this must be tested for and I must be
> > > > mis-understanding it - but mask seems to be the one thing there are
> > no
> > > > tests
> > > > for - and there don't seem to be any in struts either for
> > > > FieldChecks.validateMask())
> > > >
> > > >
> > > > Anyway, am I right - is this a bug, or am I just using it wrongly?
> > > >
> > > > Niall
> > > >
> > > > P.S. If I am right, then it implies no one is using mask and I think
> > > > thats
> > > > an argument for my simpler number validation.
> > > >
> > > >
> > > > ----- Original Message ----- 
> > > > From: "David Graham" <[EMAIL PROTECTED]>
> > > > To: "Struts Developers List" <[EMAIL PROTECTED]>
> > > > Sent: Thursday, January 15, 2004 10:19 PM
> > > > Subject: Re: Validating Formatted Numbers Patch [Bugzilla 26151]
> > > >
> > > >
> > > > > The point of having the mask validation is so we don't have to
> > support
> > > > all
> > > > > variations of patterns.  I'm -1 on adding validators that
> > duplicate
> > > > what
> > > > > can already be done with mask.
> > > > >
> > > > > David
> > > > >
> > > > > --- Niall Pemberton <[EMAIL PROTECTED]> wrote:
> > > > > > Robert,
> > > > > >
> > > > > > I tried to get mask to work (although until today I had no
> > knowledge
> > > > of
> > > > > > regular expressions) using the ORA demonstration applet and  I
> > > > couldn't
> > > > > > get
> > > > > > it to (including your suggestion).
> > > > > >
> > > > > > I'm not saying regular expressions couldn't work (only I don't
> > know
> > > > how
> > > > > > to
> > > > > > make them!), but the pattern's used in DecimalFormat are so much
> > > > more
> > > > > > straight forward and designed for the task. Typically as people
> > are
> > > > > > probably
> > > > > > using a pattern with DecimalFormat to output the data to screen,
> > it
> > > > then
> > > > > > is
> > > > > > much easier and intuitive to specify the same pattern for
> > > > validation.
> > > > > >
> > > > > > I say horses for courses and to me using a number pattern to
> > > > validate
> > > > > > numbers is a better way to do it - hence the enhacement request:
> > > > > >
> > > > > > http://nagoya.apache.org/bugzilla/show_bug.cgi?id=26151
> > > > > >
> > > > > > Thanks
> > > > > >
> > > > > > Niall
> > > > > >
> > > > > > > Robert Leland wrote:
> > > > > > >
> > > > > > > So using mask won't work ? (my syntax below is probably not
> > > > correct)
> > > > > > >
> > > > > > > <field property="amount" depends="required,mask">
> > > > > > >     <arg0 key="sale.amount" />
> > > > > > >     <var>
> > > > > > >           <var-name>mask</var-name>
> > > > > > >           <var-value>\d,\d\d0\:\(\d,\d\d0\)</var-value>
> > > > > > >     </var>
> > > > > > > </field>
> > > > > >
> > > > > > I need to validate numbers which are formatted and have posted a
> > > > patch
> > > > > > to
> > > > > > bugzilla which enhances validator the existing number
> > validations to
> > > > do
> > > > > > this.
> > > > > >
> > > > > > This patch allows an optional "numberPattern" variable to be
> > > > specified
> > > > > > for
> > > > > > the existing byte, short, integer, long, float and double
> > > > validations.
> > > > > > For
> > > > > > Example:
> > > > > >
> > > > > > <field property="amount" depends="required,integer">
> > > > > >     <arg0 key="sale.amount" />
> > > > > >     <var>
> > > > > >           <var-name>numberPattern</var-name>
> > > > > >           <var-value>#,##0:(#,##0)</var-value>
> > > > > >     </var>
> > > > > > </field>
> > > > > >
> > > > > > If the pattern is specified, then java.text.DecimalFormat is
> > used to
> > > > > > parse
> > > > > > the number and check if it is valid (catering for Locale).
> > > > > >
> > > > > > I have also posted a patch to add a new section the Validator
> > User
> > > > Guide
> > > > > > which describes all the standard suppiled validations and shows
> > > > examples
> > > > > > of
> > > > > > usage, including using the new "numberPattern" variable.
> > > > > >
> > > > > > Thanks in advance for any feedback.
> > > > > >
> > > > > > Niall
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > > > > > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> > > > > >
> > > > >
> >
> === message truncated ===
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
> http://hotjobs.sweepstakes.yahoo.com/signingbonus
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>



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

Reply via email to