当前位置: 首页 > article >正文

常用正则表达式-MAC 地址

MAC地址的定义

物理地址(通常称为 MAC地址,Media Access Control Address)是网络设备在数据链路层(如以太网、Wi-Fi)的唯一标识符。它由设备的网络接口卡(NIC)固化在硬件中,用于在局域网(LAN)中精确寻址设备。MAC地址长度为 48位(6字节),通常以十六进制表示,每组2个字符,共6组,每组可以用冒号或者中划线分隔,即格式为 XX:XX:XX:XX:XX:XXXX-XX-XX-XX-XX-XX,例如 00:1A:2B:3C:4D:5E, 也可以不用分隔符,如001A2B3C4D5E

在MAC地址中,前24位(即前三个八位组或前六个十六进制数字)称为组织唯一标识符(Organizationally Unique Identifier, OUI)。这部分由IEEE(电气和电子工程师协会)分配给各个硬件制造商,用于唯一标识网络设备的生产厂商。这意味着,通过查看MAC地址的前24位,可以识别出制造该设备的厂商。

剩下的24位(即后三个八位组或后六个十六进制数字)则由厂商自行分配,用来标识具体的设备,确保每个设备在全球范围内都是唯一的。

MAC地址的正则表达式

根据定义,可以给出正则表达式:

# MAC地址正则表达式(支持冒号、中划线分隔或无分隔符)
^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}|([0-9a-fA-F]{2}-){5}[0-9a-fA-F]{2}|[0-9a-fA-F]{12}$

转换为java代码:

String MAC_ADDRESS = "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}|([0-9a-fA-F]{2}-){5}[0-9a-fA-F]{2}|[0-9a-fA-F]{12}$";

对应完整java代码

package com.ysx.utils.pattern;import java.util.regex.Pattern;/*** @author youngbear* @email youngbear@aliyun.com* @date 2025-03-30 23:24* @blog <a href="https://blog.csdn.net/next_second">...</a>* @github <a href="https://github.com/YoungBear">...</a>* @description Mac 地址*/
public class MacAddressValidator {// 支持冒号、中划线分隔或无分隔符private static final String MAC_ADDRESS = "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}|([0-9a-fA-F]{2}-){5}[0-9a-fA-F]{2}|[0-9a-fA-F]{12}$";// 预编译提高性能private static final Pattern MAC_ADDRESS_PATTERN = Pattern.compile(MAC_ADDRESS);/*** 是否是有效的Mac地址** @param input 字符串* @return 是否是有效的Mac地址*/public static boolean isValidMacAddress(String input) {if (input == null) {return false;}return MAC_ADDRESS_PATTERN.matcher(input).matches();}
}

单元测试

package com.ysx.utils.pattern;import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;import java.util.stream.Stream;import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;/*** @author youngbear* @email youngbear@aliyun.com* @date 2025-03-30 23:25* @blog <a href="https://blog.csdn.net/next_second">...</a>* @github <a href="https://github.com/YoungBear">...</a>* @description test for {@link MacAddressValidator}*/
public class MacAddressValidatorTest {private static Stream<String> validMacAddressProvider() {return Stream.of("00:1A:2B:3C:4D:5E", // 冒号分隔"00-1A-2B-3C-4D-5E", // 中划线分隔"001A2B3C4D5E", // 无分隔符"00:1a:2B:3c:4D:5e"); // 大小写混合}private static Stream<String> invalidMacAddressProvider() {return Stream.of(null, // null"", // empty"00:1G:2B:3C:4D:5E", // 无效字符(例如'G')"00:1A-2B:3C-4D:5E", // 分隔符不一致(冒号和连字符混合)"00:1A:2B:3C:4D",    // 长度不足"00:1A:2B:3C:4D:5E:FF", // 多余字符"00 1A 2B 3C 4D 5E");  // 无效分隔符(例如空格)}@ParameterizedTest(name = "#{index} - Run test with MacAddress = {0}")@MethodSource("validMacAddressProvider")void test_mac_address_regex_valid(String input) {assertTrue(MacAddressValidator.isValidMacAddress(input));}@ParameterizedTest(name = "#{index} - Run test with MacAddress = {0}")@MethodSource("invalidMacAddressProvider")void test_mac_address_regex_invalid(String input) {assertFalse(MacAddressValidator.isValidMacAddress(input));}
}

源代码地址

相关文章:

常用正则表达式-MAC 地址

MAC地址的定义 物理地址&#xff08;通常称为 MAC地址&#xff0c;Media Access Control Address&#xff09;是网络设备在数据链路层&#xff08;如以太网、Wi-Fi&#xff09;的唯一标识符。它由设备的网络接口卡&#xff08;NIC&#xff09;固化在硬件中&#xff0c;用于在局…...

如何自动化同义词并使用我们的 Synonyms API 进行上传

作者&#xff1a;来自 Elastic Andre Luiz 了解如何使用 LLM 来自动识别和生成同义词&#xff0c; 使术语可以通过程序方式加载到 Elasticsearch 同义词 API 中。 提高搜索结果的质量对于提供高效的用户体验至关重要。优化搜索的一种方法是通过同义词自动扩展查询词。这样可以更…...

一. 相机模组摆放原理

1. 背景&#xff1a; 相机开发时经常出现因模组摆放问题&#xff0c;导致相机成像方向异常。轻则修改软件、模组返工&#xff0c; 重则重新修改堆叠&#xff0c;影响相机调试进度。因此&#xff0c;设计一个模型实现模组摆放纠错很有必要。 2. 原理&#xff1a; 2.1 口诀&am…...

【C++游戏引擎开发】《线性代数》(1):环境配置与基础矩阵类设计

一、开发环境配置 1.1 启用C 20 在VS2022中新建项目后右键项目 1.2 启用增强指令集 1.3 安装Google Test vcpkg安装使用指南 vcpkg install gtest:x64-windows# 集成到系统目录&#xff0c;只需要执行一次&#xff0c;后续安装包之后不需要再次执行 vcpkg integrate inst…...

sqli-labs靶场 less 8

文章目录 sqli-labs靶场less 8 布尔盲注 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…...

基于大模型的知识图谱搜索的五大核心优势

在传统知识图谱与生成式AI融合的浪潮中&#xff0c;基于大模型的知识图谱搜索正成为新一代智能检索的标杆技术&#xff0c;飞速灵燕智能体平台就使用了该技术&#xff0c;其核心优势体现在&#xff1a; 1. 语义穿透力升级 突破关键词匹配局限&#xff0c;通过大模型的深层语义…...

【MySQL】从零开始:掌握MySQL数据库的核心概念(五)

由于我的无知&#xff0c;我对生存方式只有一个非常普通的信条&#xff1a;不许后悔。 前言 这是我自己学习mysql数据库的第五篇博客总结。后期我会继续把mysql数据库学习笔记开源至博客上。 上一期笔记是关于mysql数据库的增删查改&#xff0c;没看的同学可以过去看看&#xf…...

人生感悟8

前言 今天&#xff0c;在这里跟各位聊一些看法。为什么现在的歌曲和影视剧越来越没有艺术性和内涵&#xff1f;为什么现在读书的人越来越少&#xff1f; 正文 这里我先声明一点&#xff0c;就像C或者是Java创建variable or constant一样&#xff0c;本文所述内容只限于个人观…...

Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现

此次官方发布的 Spring AI Alibaba OpenManus 实现&#xff0c;包含完整的多智能体任务规划、思考与执行流程&#xff0c;可以让开发者体验 Java 版本的多智能体效果。它能够根据用户的问题进行分析&#xff0c;操作浏览器&#xff0c;执行代码等来完成复杂任务等。 项目源码及…...

鸿蒙UI开发

鸿蒙UI开发 本文旨在分享一些鸿蒙UI布局开发上的一些建议&#xff0c;特别是对屏幕宽高比发生变化时的应对思路和好的实践。 折叠屏适配 一般情况&#xff08;自适应布局/响应式布局&#xff09; 1.自适应布局 1.1自适应拉伸 左右组件定宽 TypeScript //左右定宽 Row() { …...

Elasticsearch-实战案例

一、没有使用Elasticsearch的查询速度698ms 1.数据库模糊查询不走索引&#xff0c;在数据量较大的时候&#xff0c;查询性能很差。需要注意的是&#xff0c;数据库模糊查询随着表数据量的增多&#xff0c;查询性能的下降会非常明显&#xff0c;而搜索引擎的性能则不会随着数据增…...

#基于Django实现机器学习医学指标概率预测网站

基于Django实现机器学习医学指标概率预测网站 一、引言 在当今数字化医疗的大背景下&#xff0c;利用机器学习模型结合Web应用进行医学指标的概率预测具有重要的实际意义。本文将详细介绍一个基于Django框架构建的医学指标概率预测系统&#xff0c;通过结合随机森林模型&…...

【bug】OPENCV和FPGA的版本对应关系

如果opencv和FPGA的版本不对应,则会出现如下warning /usr/bin/ld: warning: libavcodec.so.57, needed by /usr/lib/gcc/aarch64-linux-gnu/7/../../../aarch64-linux-gnu/libopencv_videoio.so, may conflict with libavcodec.so.58 /usr/bin/ld: warning: libavformat.so.5…...

IP数据报报文格式

一 概述 IP数据报由两部分组成&#xff1a;首部数据部分。首部的前一部分是固定长度&#xff0c;一共20字节大小&#xff0c;是所有IP数据报文必须具有的&#xff1b;固定部分后面是一些可选字段&#xff0c;其长度是可变的。 二 首部固定部分各字段意义 &#xff08;1&…...

一键实现:谷歌表单转word(formtoword)

一键将 Google Forms 转换为 Word&#xff0c;最简单的方法 有些繁琐的工作让人倍感挫败&#xff0c;明明 应该 可以自动化。你精心制作了一份 Google Forms&#xff0c;收集了数据&#xff0c;现在需要在 Word 文档中分享其结构或内容。于是&#xff0c;你只能手动复制粘贴问…...

openEuler24.03 LTS下安装Kafka集群

目录 前提条件 Kafka集群规划 下载Kafka 解压 设置环境变量 配置Kafka 分发到其他机器 分发安装文件 分发环境变量 启动Kafka 测试Kafka 关闭Kafka 集群启停脚本 问题及解决 前提条件 安装好ZooKeeper集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安…...

qt QQuaternion详解

1. 概述 QQuaternion 是 Qt 中用于表示三维空间中旋转的四元数类。它包含一个标量部分和一个三维向量部分&#xff0c;可以用来表示旋转操作。四元数在计算机图形学中广泛用于平滑的旋转和插值。 2. 重要方法 默认构造函数 QQuaternion::QQuaternion(); // 构造单位四元数 (1…...

epoch、batch、batch size、step、iteration深度学习名词含义详细介绍

卷积神经网络训练中的三个核心概念&#xff1a;Epoch、Batch Size 和迭代次数 在深度学习中&#xff0c;理解一些基本的术语非常重要&#xff0c;这些术语对模型的训练过程、效率以及最终性能都有很大影响。以下是一些常见术语的含义介绍&#xff1a; 1. Epoch&#xff08;周…...

pytorch中不同的mask方法:masked_fill, masked_select, masked_scatter

在 PyTorch 中&#xff0c;masked_fill、masked_select 和 masked_scatter 是三种常用的掩码&#xff08;mask&#xff09;操作方法&#xff0c;它们通过布尔类型的掩码张量&#xff08;mask&#xff09;对原始张量进行条件筛选或修改。以下是它们的详细解释和对比&#xff1a;…...

TCP 协议算法解析 | RTT / 滑动窗口 / 拥塞控制

注&#xff1a;本文为 “TCP 协议算法解析” 相关文章合辑。 略作重排&#xff0c;未去重。 如有内容异常&#xff0c;请看原文。 TCP 的那些事儿&#xff08;上&#xff09; 2014 年 05 月 28 日 陈皓 TCP 是一个极为复杂的协议&#xff0c;因为它需要解决众多问题&#x…...

卷积神经网络 - ResNet(残差网络)

残差网络(Residual Network&#xff0c;ResNet)通过给非线性的卷积层增加直连边 (Shortcut Connection)(也称为残差连接(Residual Connection))的方式来提高信息的传播效率。 这是一种特殊的深度神经网络结构&#xff0c;由 Kaiming He 等人在 2015 年提出&#xff0c;目的是解…...

GreenPlum学习

简介 Greenplum是一个面向数据仓库应用的关系型数据库&#xff0c;因为有良好的体系结构&#xff0c;所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库&#xff0c;其采用sharednothi…...

传统神经网络、CNN与RNN

在网络上找了很多关于深度学习的资料&#xff0c;也总结了一点小心得&#xff0c;于是就有了下面这篇文章。这里内容较为简单&#xff0c;适合初学者查看&#xff0c;所以大佬看到这里就可以走了。 话不多说&#xff0c;上图 #mermaid-svg-Z3k5YhiQ2o5AnvZE {font-family:&quo…...

无人机,雷达定点飞行时,位置发散,位置很飘,原因分析

参考&#xff1a; 无人车传感器 IMU与GPS数据融合进行定位机制_gps imu 组合定位原始数-CSDN博客 我的无人机使用雷达定位&#xff0c;位置模式很飘 雷达的更新频率也是10HZ&#xff0c; 而px飞控的频率是100HZ&#xff0c;没有对两者之间的频率差异做出处理 所以才导致无人…...

【Linux探索学习】第二十九弹——线程概念:Linux线程的基本概念与线程控制详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在现代操作系统中&#xff0c;线程是程序执行流的最小单元。与进程相比&#xff0c;线程更加轻量级&#xff0c;创建和销毁的开销更小&…...

做游戏的发展方向

自己做的游戏&#xff08;询问发展方向&#xff09; 请选择发展方向&#xff08;截止时间5.1&#xff09;(投票截止3.24) &#xff08;这将影响接下来用的游戏发展(未登录也可参加)&#xff09; 网页 c(原)...

深入探索 iOS 卡顿优化

认识卡顿 一些概念 FPS&#xff1a;Frames Per Second&#xff0c;表示每秒渲染的帧数&#xff0c;通过用于衡量画面的流畅度&#xff0c;数值越高则表示画面越流畅。CPU&#xff1a;负责对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码…...

# 基于 OpenCV 的选择题自动批改系统实现

在教育领域&#xff0c;选择题的批改工作通常较为繁琐且重复性高。为了提高批改效率&#xff0c;我们可以利用计算机视觉技术&#xff0c;通过 OpenCV 实现选择题的自动批改。本文将详细介绍如何使用 Python 和 OpenCV 实现一个简单的选择题自动批改系统。 1. 项目背景 选择题…...

在Linux系统中将html保存为PNG图片

1 前言 之前使用Pyecharts库在Windows系统中生成图表并转换为PNG格式图片&#xff08;传送门&#xff09;&#xff0c;现将代码放于Linux服务器上运行&#xff0c;结果发现错误&#xff0c;生成html文件之后无法保存图片。 2 原理 基于Selenium库的保存方案&#xff0c;其原…...

身份验证:区块链如何让用户掌控一切

在网上证明你自称的身份变得越来越复杂。由于日常生活的很多方面现在都在网上进行&#xff0c;保护你的数字身份比以往任何时候都更加重要。 我们可能都接受过安全培训&#xff0c;这些培训鼓励我们选择安全的密码、启用双因素身份验证或回答安全问题&#xff0c;例如“你祖母…...