regex - 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}$/
解决方案
在 PCRE 中,您可以使用负前瞻来禁止某些特定模式。
/^(?!(.)\1(?:[-:]?\1\1)+$)[A-Fa-f0-9]{2}([-:]?)(?:[A-Fa-f0-9]{2}\2){4}[A-Fa-f0-9]{2}$/
请注意,我还稍微重构了您的正则表达式。
推荐阅读
- security - 相同站点=无;Safari 13 以上版本的安全仍然面临问题
- typescript - 根据 http 响应状态代码使 typescript 单元测试失败
- r - 如何在 Spark EMR 集群中安装 RcppArmadillo?
- state - 如何制作 vhdl Mealy 状态机?
- java - 无法将 SQL Server 数据库连接到 Spring Boot 应用程序
- discord - 使用名称查找 Discord 频道 ID
- informatica - Informatica Developer 启动问题
- json - 根据 JSON 模式中的其他属性值设置其他属性
- c - 正则表达式 - 在字符串中找到一个单词,其中总是有一个额外的字母
- android - 如何单独下载Android SDK?