an email address
Matches an email address. It is anchored at both ends, so the whole string has to match. There are no capture groups.
Pattern
/^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$/- Match scope
- the whole string
- Capture groups
- 0
- What it catches in the first example
- a@b.com
Try it yourself
Type any text and the parts this expression catches are highlighted. It runs in your browser and is never sent anywhere.
a@b.com
1 match
Examples that match
- a@b.com
- first.last@sub.example.co.kr
Examples that do not match
- a@b
- a@@b.com
- a b@c.com
- a@b..com
Other expressions in this group
^https?://[^\s/$.?#][^\s]*$a web address^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$a domain name^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$an IPv4 address^(?:[0-9a-f]{1,4}:){7}[0-9a-f]{1,4}$an IPv6 address written out in full^(?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2}$a MAC address^(?:6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]?\d{1,4})$a port number^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$a UUID^#(?:[0-9a-f]{3}|[0-9a-f]{6})$a hex colour codeHow 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 an email address?
^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$.
Q. Which strings match?
Text like a@b.com matches; text like a@b 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 are no capture groups, so only the whole match (match[0]) comes back. Wrap the part you need in brackets to capture it.