Validation
Match a US phone number
Match US phone numbers in a variety of common formats.
Pattern
Regular expression
(?:\+?1[-. ]?)?\(?[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}How it works
Accepts optional `+1` country code, optional parentheses on area code, and `-`, `.`, or spaces as separators. Area code and exchange must start with 2–9 (US telephone number rules).
Matches
- ▸(415) 555-2671
- ▸415-555-2671
- ▸+1 415 555 2671
- ▸4155552671
Non-matches
- ▸555-1234
- ▸1-100-555-5555 (invalid area code)
Common gotchas
For international phone numbers, this pattern will not work. Use Google's `libphonenumber` library (`phonenumbers` in Python, `libphonenumber` in JS/Go/Java) for full E.164 handling.
Language snippets
JavaScript
const re = /(?:\+?1[-. ]?)?\(?[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}/g;Python
re.findall(r"(?:\+?1[-. ]?)?\(?[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}", text)Go
re := regexp.MustCompile(`(?:\+?1[-. ]?)?\(?[2-9][0-9]{2}\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}`)Java
Pattern.compile("(?:\\+?1[-. ]?)?\\(?[2-9][0-9]{2}\\)?[-. ]?[2-9][0-9]{2}[-. ]?[0-9]{4}")Related patterns
Match an email address
[\w.+-]+@[\w-]+\.[\w.-]+
Match a URL
https?:\/\/[\w.-]+(?:\.[\w.-]+)+[\w\-._~:/?#\[\]@!$&'()*+,;=]*
Match an IPv4 address
(?:(?: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)
Match an IPv6 address
(?:[A-Fa-f0-9]{1,4}:){7}[A-Fa-f0-9]{1,4}|::1|::
Match a UUID (v4)
[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}
Match a US ZIP code
\b[0-9]{5}(?:-[0-9]{4})?\b