我们有一个Java Web服务,它获取表示MAC地址的String。我们想要验证给定的String是否实际匹配所需的格式。此外,我们希望创建一个标准化的表单,使它们具有可比性。
我搜索了很长一段时间但发现只有一些“松散的正则表达式”。我们真的更喜欢有一个可以解析不同格式的库并返回一个规范化的(字符串)表示(即01-23-45-67-89-ab
和01:23:45:67:89:ab
将返回相同的表示并具有可比性)。
我期望找到一些成熟且经过良好测试的库,它可以完成这样的任务。有人可以指点我吗?我简直不敢相信它还不存在。
我非常感谢不将任何RegExes视为可能的解决方案(如果需要,我们知道如何做到这一点)。
答案 0 :(得分:2)
The IPAddress Java library会这样做。链接中提供了javadoc。免责声明:我是项目经理。
该库将读取各种常见的MAC地址格式,如aa:bb:cc:dd:ee:ff,aa-bb-cc-dd-ee-ff,aabb.ccdd.eeff,它支持的地址是48或64位,并且还允许您指定地址范围,如aa-ff:bb:cc:*:ee:ff
验证地址是否有效:
String str = "aa:bb:cc:dd:ee:ff";
MACAddressString addrString = new MACAddressString(str);
try {
MACAddress addr = addrString.toAddress();
...
} catch(AddressStringException e) {
//e.getMessage provides validation issue
}
该库已经过充分测试,它有一个包含数千个测试的测试套件。
答案 1 :(得分:0)
成熟且经过良好测试的图书馆
验证MAC地址?它是以十六进制表示的6个字节,可选地用分隔符分隔。这是一个家庭作业或轻型面试问题,无需编写图书馆。我的解决方案是10行,它比必要的更偏执...