Regex for MAC Address — Pattern Explained with Examples
DodaTech
Updated 2026-06-20
2 min read
In this tutorial, you'll learn about Regex for MAC Address. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
MAC (Media Access Control) address validation is needed in network tools, device enrollment systems, and hardware inventory management. A MAC address is a 48-bit identifier typically written as 6 pairs of hexadecimal digits separated by colons or hyphens, or as a continuous 12-character hex string.
The Pattern
/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/
For the continuous no-separator format:
/^[0-9A-Fa-f]{12}$/
Pattern Breakdown
| Part | Meaning |
|---|---|
^ |
Start-of-string anchor |
([0-9A-Fa-f]{2}[:-]){5} |
Five groups of two hex digits each followed by colon or hyphen |
[0-9A-Fa-f]{2} |
Final sixth group of two hex digits |
$ |
End-of-string anchor |
Matches
- 00:1A:2B:3C:4D:5E
- 00-1A-2B-3C-4D-5E
- AA:BB:CC:DD:EE:FF
- a1:b2:c3:d4:e5:f6
- 001A2B3C4D5E
Does NOT Match
- 00:1A:2B:3C:4D (only 5 groups)
- 00:1A:2B:3C:4D:5E:6F (7 groups)
- 00:1A:2B:3C:4D:GH (invalid hex characters)
- 00:1A:2B:3C:4D:5 (odd number of hex digits in last group)
- 001A2B3C4D5 (only 11 hex characters)
Language Examples
JavaScript
const macRegex = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/;
const macContinuousRegex = /^[0-9A-Fa-f]{12}$/;
console.log(macRegex.test('00:1A:2B:3C:4D:5E')); // true
console.log(macRegex.test('00:1A:2B:3C:4D')); // false
Python
import re
pattern = r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$'
print(bool(re.match(pattern, '00:1A:2B:3C:4D:5E'))) # True
print(bool(re.match(pattern, '00:1A:2B:3C:4D'))) # False
Go
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$`)
fmt.Println(re.MatchString("00:1A:2B:3C:4D:5E")) // true
fmt.Println(re.MatchString("00:1A:2B:3C:4D")) // false
}
Common Pitfalls
- The multicast vs unicast bit (second hex character's least significant bit) determines address type — this pattern does not validate that bit
- EUI-64 identifiers are 8 bytes (16 hex digits) long, not 6 bytes — a different pattern is needed for IPv6-derived MACs
- The broadcast address
FF:FF:FF:FF:FF:FFis valid by the pattern but may need special handling in business logic - Case sensitivity can cause duplicate records — normalize to uppercase or lowercase before storage
- Leading zeros in each pair are significant and must be preserved
Real-World Use Cases
- Device provisioning portals — validate MAC addresses during network device enrollment and registration
- Inventory management — scan and verify hardware MAC addresses against purchase records or asset tags
- DHCP server configuration — validate MAC address entries for static IP reservations in DHCP lease files
FAQ
Related Patterns
Regex for IPv4 Address Regex for IPv6 Address
← Previous
RAII (Resource Acquisition Is Initialization) — Explained with Examples
Next →
Regex for HTML Tags — Pattern Explained with Examples
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro