首页 > 解决方案 > Mac 地址正则表达式过滤掉坏 Mac

问题描述

我有一个第 3 方应用程序,它有一个 MAC 地址字段,我只能将 RegEx 应用于数据验证。我有一个用于验证长度、十六进制和破折号/冒号的正则表达式。我的绊脚石是试图阻止输入所有相同的字符、全 0、全 1 等。

这是我到目前为止所拥有的:

/^(?:[A-Fa-f0-9]{2}([-:]{0,1}))(?:[A-Fa-f0-9]{2}\1){4}[A-Fa-f0-9]{2}$/

标签: regexpcremac-address

解决方案


在 PCRE 中,您可以使用负前瞻来禁止某些特定模式。

/^(?!(.)\1(?:[-:]?\1\1)+$)[A-Fa-f0-9]{2}([-:]?)(?:[A-Fa-f0-9]{2}\2){4}[A-Fa-f0-9]{2}$/

请注意,我还稍微重构了您的正则表达式。


推荐阅读