我有一个关于 MAC 地址验证的问题:
这些 MAC 地址有效:
00:0A:02:0B:03:0C
ff:ff:ff:ff:ff:ff
但是,这些地址无效:
00:0A:02:0k:03:0j
00:0A:02_00:03?0C
如何使用 C 检查 MAC 地址的有效性?
我有一个关于 MAC 地址验证的问题:
这些 MAC 地址有效:
00:0A:02:0B:03:0C
ff:ff:ff:ff:ff:ff
但是,这些地址无效:
00:0A:02:0k:03:0j
00:0A:02_00:03?0C
如何使用 C 检查 MAC 地址的有效性?
检查每个字符是否适合其位置的简单循环就足够了:
#include <stdbool.h>
#include <ctype.h>
bool isMAC(char *s) {
for(i = 0; i < 17; i++) {
if(i % 3 != 2 && !isxdigit(s[i]))
return false;
if(i % 3 == 2 && s[i] != ':')
return false;
}
if(s[17] != '\0')
return false;
return true;
}
除非您想要使用正则表达式库的权重1,否则只需构建一个简单的 FSM 来检查两个十六进制数字(isxdigit
在 中使用或简单查找0123456789abcdefABCDEF
),然后是:
(或-
)重复六次(最后一组除外)或四个十六进制数字后跟.
重复三遍(最后一组除外)。
尝试自己编写代码。如果您遇到问题,请在您的代码和您遇到的问题中发布一个新的非常具体的问题。
1:为此,你不知道。