You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求可匹配部分MAC地址的正则表达式(含匹配/排除规则)

匹配部分MAC地址的正则表达式方案

没问题,我帮你定制了一个完全符合需求的正则表达式,先直接上代码:

^([0-9A-Fa-f]{2}[:-])*([0-9A-Fa-f]{1,2})?$

规则拆解

我来逐部分解释这个正则的逻辑,方便你理解和调整:

  • ^ 和 $:锚定字符串的开头和结尾,确保我们匹配的是整个字符串,不会漏掉前后的非法字符
  • ([0-9A-Fa-f]{2}[:-])*:匹配0次或多次「两位十六进制字符 + 分隔符(:或-)」的组合,对应MAC地址中已经完成的分组(比如93:、3E-这类)
  • ([0-9A-Fa-f]{1,2})?:匹配0次或1次「1-2位十六进制字符」,对应MAC地址最后一个可能不完整的分组;如果字符串以分隔符结尾(比如你的例子84:0C:),这部分可以为空,照样能匹配

验证你的测试用例

匹配成功的场景:

  • 93:31:13:E1:D3:1A:5次完整分组(带分隔符)+ 最后两位十六进制,完全符合规则
  • 3E-EB-47-8:3次完整分组(带分隔符)+ 最后1位十六进制,符合规则
  • 84:0C::2次完整分组(带分隔符),结尾无额外字符,符合规则

匹配失败的场景:

  • 6B-90-8Y-31-D1-7K:包含Y、K这类非十六进制字符,正则无法匹配
  • 37-4H-31:包含H这个非十六进制字符,正则无法匹配

可选调整:禁止空字符串

如果需要确保不匹配空字符串(比如用户输入完全为空的情况),可以用下面的版本:

^([0-9A-Fa-f]{2}[:-])+([0-9A-Fa-f]{0,2})?$|^[0-9A-Fa-f]{1,2}$

这个版本要求至少有一个有效字符,要么是一个/两个十六进制字符,要么是至少一个完整分组(带分隔符)。

内容的提问来源于stack exchange,提问作者Nope Nope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:50:24