首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac Address RegEx可过滤不良Mac

Mac Address RegEx可过滤不良Mac
EN

Stack Overflow用户
提问于 2019-10-08 01:13:42
回答 2查看 93关注 0票数 0

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

这就是我到目前为止所知道的:

代码语言:javascript
复制
/^(?:[A-Fa-f0-9]{2}([-:]{0,1}))(?:[A-Fa-f0-9]{2}\1){4}[A-Fa-f0-9]{2}$/
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-08 01:23:23

在PCRE中,您可以使用负向先行来禁止某些特定的模式。

代码语言:javascript
复制
/^(?!(.)\1(?:[-:]?\1\1)+$)[A-Fa-f0-9]{2}([-:]?)(?:[A-Fa-f0-9]{2}\2){4}[A-Fa-f0-9]{2}$/

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

票数 0
EN

Stack Overflow用户

发布于 2019-10-08 01:31:48

所有部分都匹配相同的字符类。你也可以用一个负的前视(?!.*([A-Fa-f0-9])\1)来开始这个模式,以检查后面是否有两个相同的字符,使用另一个反向引用。

然后,当前的反向引用将从\1递增到\2

代码语言:javascript
复制
^(?!.*([A-Fa-f0-9])\1)(?:[A-Fa-f0-9]{2}([-:]?))(?:[A-Fa-f0-9]{2}\2){4}[A-Fa-f0-9]{2}$

Regex pattern

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58274248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档