exactly one of two words
Matches exactly one of two words. It is anchored at both ends, so the whole string has to match. There is 1 capture group.
Pattern
/^(cat|dog)$/- Match scope
- the whole string
- Capture groups
- 1
- What it catches in the first example
- cat
Try it yourself
Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.
cat
1 match
Examples that match
- cat
- dog
Examples that do not match
- cats
- hotdog
Other expressions in this group
^(?:https?://)?example\.com$an address with or without the scheme^(?:\d{1,3}\.){3}\d{1,3}$an address made of four parts^\d{0,3}$at most three digits^\w{3,8}$between three and eight word characters^(?:\w+\.){2}\w+$three parts separated by dots^/[a-z]+/?$a path whose trailing slash is optional^(ab){3}$a group repeated exactly three times^[a-c]{2,4}$two to four characters from a setHow to read this
- With ^ and $ around it, the whole string must match; without them the match can sit anywhere. Always anchor an expression you use for validation.
- Round brackets ( ) capture what they wrap. When you only need grouping, write (?: ) so the numbering of later groups does not shift.
- Every expression here is checked against its examples. Even so, "looks like an email" and "is a real inbox" remain different questions.
- Nested open-ended repeats such as (a+)+ can blow up on certain inputs. Look for that shape before pasting someone else’s expression into your code.
Frequently asked questions
Q. What is the regex for exactly one of two words?
^(cat|dog)$.
Q. Which strings match?
Text like cat matches; text like cats does not.
Q. Does the whole string have to match?
Yes. It is wrapped in ^ and $, so nothing but a full match passes.
Q. How do I use what it caught?
There is one capture group, so you can read them from match[1] onwards.