A
*quantifier*
in a pattern means to repeat the preceding item a certain number of
times. We've already seen three quantifiers:
`*`, `+`, and `?`.
But if none of those three suits your needs, just use a
comma-separated
pair of numbers inside curly braces
(`{}`) to specify exactly how few and how many
repetitions are allowed.

So the pattern `/a{5,15}/` will match from five to
fifteen repetitions of the letter `a`. If the
`a` appears three times, that's too few, so it
won't match. If it appears five times, it's a match. If
it appears ten times, that's still a match. If it appears
twenty times, just the first fifteen will match, since that's
the upper limit.

If you omit the second number (but include the comma), there's
no upper limit to the number of times the item will match. So,
`/(fred){3,}/` will match if there are three or more
instances of `fred` in a row (with no extra
characters, like spaces, allowed between each `fred`
and the next). There's no upper limit, so that would match
eighty-eight instances of `fred`, if you had a
string with that many.

If you omit the comma as well as the upper bound, the number given is
an exact count: `/\w{8}/` will match exactly eight
word characters (occuring as part of a larger string, perhaps).

In fact, the three quantifier characters that we saw earlier are just
common shortcuts. The star is the same as the quantifier
`{0,}`, meaning zero or more. The plus is the same
as `{1,}`, meaning one or more. And the question
mark could be written as `{0,1}`. In practice,
it's unusual to need any curly-brace quantifiers, since the
three shortcut characters are nearly always the only ones needed.

Copyright © 2002 O'Reilly & Associates. All rights reserved.