regular expressions: match x times OR y times

^(\d{3}|\d{6})$

You have to have some sort of terminator otherwise \d{3} will match 1234. That’s why I put ^ and $ above. One alternative is to use lookarounds:

(?<!\d)(\d{3}|\d{6})(?!\d)

to make sure it’s not preceded by or followed by a digit (in this case). More in Lookahead and Lookbehind Zero-Width Assertions.

Leave a Comment