我们有一个 Java Web 服务,它获取表示 MAC 地址的字符串。我们想要验证给定的字符串是否确实符合所需的格式。此外,我们希望创建一个标准化形式以使它们具有可比性。
我搜索了很长一段时间,但只找到了一些“松散的正则表达式”。我们真的更希望有一个可以解析不同格式并返回标准化(字符串)表示形式的库(即 01-23-45-67-89-ab
和 01:23:45 :67:89:ab
将返回相同的表示形式并且具有可比性)。
我希望找到一些成熟且经过良好测试的库,可以完成此类任务。谁能指点我一下吗?我简直不敢相信它还不存在。
我将非常庆幸没有看到任何正则表达式作为可能的解决方案(如果需要,我们知道如何做到这一点)。
最佳答案
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
}
该库经过了良好的测试,它有一个包含数千个测试的测试套件。
关于用于验证和比较 MAC 地址的 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22450819/