【问题标题】:Java Library to validate and compare MAC address用于验证和比较 MAC 地址的 Java 库
【发布时间】:2014-04-22 10:46:25
【问题描述】:

我们有一个 Java Web 服务,它获取一个表示 MAC 地址的字符串。我们想要验证给定的字符串是否真正匹配所需的格式。此外,我们希望创建一个规范化的形式以使它们具有可比性。

我搜索了很长时间,但只找到了一些“松散的正则表达式”。我们真的希望有一个可以解析不同格式并返回标准化(字符串)表示的库(即01-23-45-67-89-ab01:23:45:67:89:ab 将返回相同的表示并具有可比性)。

我希望找到一些成熟且经过良好测试的库,可以完成此类任务。谁能指点我?我简直不敢相信它还不存在。

如果没有将任何正则表达式视为可能的解决方案,我将非常感激(我们知道必要时该怎么做)。

【问题讨论】:

  • @user2931409 不是重复的。正如我明确要求的 Java 库一样。另一个问题要求 Python 和正则表达式作为答案给出......
  • validMAC地址字符串格式的定义是什么?
  • 我们正在寻找IEEE Std 802-2001 section 6.2.3中定义的MAC-48
  • 我找不到 MAC 地址库。但我发现了一些 IP 地址验证类。见here。我想你想要喜欢这些课程。

标签: java validation comparison mac-address


【解决方案1】:

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
    }

该库经过良好测试,它有一个包含数千个测试的测试套件。

【讨论】:

    【解决方案2】:

    成熟且经过良好测试的库

    要验证 MAC 地址?它是十六进制的 6 个字节,可选用分隔符分隔。这是一个家庭作业或简单的面试问题,无需编写库。我的解决方案是 10 行,而且它比必要的更偏执......

    【讨论】:

    • 我听到了像你这样的关于时区、字符集、电子邮件地址的陈述……由于对所述问题域的了解不完整,他们引入了错误。我对 MAC 地址了解不多,也不想花时间研究不同可能格式的细节。注意:我不是在指责你什么都不知道。只是有不好的经历。我找不到任何东西的事实实际上支持了你的论点。
    • 时区:Java 中有一个关于时区的数据库。字符集:同上。电子邮件地址:验证的唯一方法是发送电子邮件并等待回复。听着,我知道你从哪里来(我去过那里),但有时确实有an authoritative source,而且保持简单的事情通常是值得的。
    猜你喜欢
    • 1970-01-01
    • 2013-04-18
    • 2015-07-16
    • 2018-01-29
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多