On Mar 27, 11:15 pm, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth Leon Williams <noel.ja...@gmail.com>:
>
>
>
> > I am pulling my hair out trying to make a regex that will
> > 1) Validate an entire line of input
> > 2) Return any number of matches in the line
>
> > The condition is that any number of product codes must exist on a line
> > separated a space. It may or may not start or end with spaces. The
> > product code is a 10 digit number.
>
> > Example Valid Input:
> > "1234567890 0987654321 5678901234"
>
> > Current Expression:
> > /^[ ]?([\d]{10}[ ])*?([\d]{10})[ ]?$/
>
> > This expression seems to validate well enough but, it only matches the
> > last two occurrences.
>
> Capture buffers with a quantifier (/(...)*/) only capture the last
> occurrence. To get all of them you have to use the /g flags and match in
> list context, but in this case it would be easier to use something like
>
> my $input = '1234567890 0987654321 5678901234';
> my @codes = split ' ', $input;
> for (@codes) {
> /\D/ and die "non-numeric code: '$_'";
> length == 10 or die "bad code length: '$_'";
> }
>
> Ben
Your right,
I got sucked into the vortex of making something more complex (and
more interesting) then it needed to be.
Thanks the reality check.
|