Regex for a hex colour
Three or six hex digits, and why the alternation order matters here.
/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/
Match a whole string consisting of "#", then (exactly 3 of "0" to "9", "a" to "f", or "A" to "F" or exactly 6 of "0" to "9", "a" to "f", or "A" to "F").
What to check
Note
Anchors match string ends, not line ends
Without the m flag, ^ and $ match only the very start and end of the input — not the start and end of each line. On multi-line input this is often not what was intended.
Fix: Add the m flag if the pattern should apply per line.
Step by step
^Anchor to the start of the input.
#Match "#".
(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})Match (exactly 3 of "0" to "9", "a" to "f", or "A" to "F" or exactly 6 of "0" to "9", "a" to "f", or "A" to "F").
$Anchor to the end of the input.
Details
- Capture groups
- None
- Flags
- None set
Check your own pattern
Paste one on the home page, or call the API or MCP server. This page is also available as markdown.