the Kleene star
/ KLAY-nee /
Picture a rubber stamp you can press as many times as you like, including not at all. The Kleene star is exactly this 'repeat as often as you want, zero times included' operator. It is what gives regular expressions their power to describe infinite families of strings with a finite formula, like 'any number of digits'.
If R is a regular expression, its Kleene star, written R with a single star after it, denotes every string formed by concatenating zero or more strings drawn from L(R). Concatenating zero copies gives the empty string ε (epsilon), so ε is always in the starred language, no matter what R is. For example, a* denotes { ε, a, aa, aaa, ... }, and (ab)* denotes { ε, ab, abab, ababab, ... }. The set L(R)* equals the union over all n ≥ 0 of L(R) concatenated with itself n times.
Two facts often surprise newcomers. First, the star of any nonempty pattern denotes an infinite language, yet that language is still regular: 'regular' means 'recognized by a finite automaton', not 'finite'. Second, applying star twice does nothing new: (R*)* denotes the same language as R*, because once you can repeat zero or more times, repeating that ability again adds nothing. This double-star law is one of the basic algebraic identities.
The language a* over {a} is { ε, a, aa, aaa, ... }, which is infinite, yet a* is a regular expression and a* is a regular language. Note ε is always included because zero copies are allowed.
Star turns one symbol into an infinite, but regular, language.
The starred language always contains ε, since zero repetitions are allowed. If you want one-or-more instead of zero-or-more, use the plus operator R+ (which is shorthand for RR*).