回到课程

检查 MAC 地址

网络接口的 MAC 地址 由 6 个以冒号分隔的两位十六进制数字组成。

例如:'01:32:54:67:89:AB'

编写一个检查字符串是否为 MAC 地址的正则表达式。

用例:

let regexp = /你的正则表达式/;

alert( regexp.test('01:32:54:67:89:AB') ); // true

alert( regexp.test('0132546789AB') ); // false (没有冒号分隔)

alert( regexp.test('01:32:54:67:89') ); // false (5 个数字,必须为 6 个)

alert( regexp.test('01:32:54:67:89:ZZ') ) // false (尾部为 ZZ)

一个两位的十六进制数可以用 [0-9a-f]{2}(假设已设定修饰符 i)进行匹配。

我们需要匹配数字 NN,然后再重复 5 次 :NN(匹配更多数字);

所以正则表达式为:[0-9a-f]{2}(:[0-9a-f]{2}){5}

现在让我们验证一下此匹配规则可以捕获整个文本:从开头开始,在结尾结束。这是通过将模式包装在 ^...$ 中实现的。

最终:

let regexp = /^[0-9a-f]{2}(:[0-9a-f]{2}){5}$/i;

alert( regexp.test('01:32:54:67:89:AB') ); // true

alert( regexp.test('0132546789AB') ); // false (没有分号分隔)

alert( regexp.test('01:32:54:67:89') ); // false (5 个数字,必须为 6 个)

alert( regexp.test('01:32:54:67:89:ZZ') ) // false (尾部为 ZZ)