应用正则表达式判断IP/MAC/DNS合法性
2017-01-24 10:08
465 查看
C中使用正则表达式
在C语言中使用正则表达式也是件很简单的事,但真正会用的人好像很少啊真是遗憾。其实应用正则表达式判断一些格式的合法性非常方便。下面就举几个例子先睹为快。
本文例子都经过测试可放心使用。
正则表达式封装
我们不必关心正则引擎的打开关闭等,因此把相关操作封装到一个函数中,实现如下:
注:使用正则表达式时需要包含头文件(#include <regex.h>)
IP地址校验
MAC地址校验
DNS域名校验
最后
这样我们就可以随意的使用正则表达式了,真是太棒了。
在C语言中使用正则表达式也是件很简单的事,但真正会用的人好像很少啊真是遗憾。其实应用正则表达式判断一些格式的合法性非常方便。下面就举几个例子先睹为快。
本文例子都经过测试可放心使用。
正则表达式封装
我们不必关心正则引擎的打开关闭等,因此把相关操作封装到一个函数中,实现如下:
注:使用正则表达式时需要包含头文件(#include <regex.h>)
/** * 判断字符串是否满足正则表达式 * regex_pattern: 正则表达式 * to_match: 待匹配正则表达式的字符串 * 返回值: -1 不匹配 * 0 匹配 */ int regex_exe(const char *regex_pattern, const char *to_match) { regex_t r; int ret; int match; char errmsg[128]; if(regcomp(&r, regex_pattern, REG_EXTENDED | REG_NEWLINE)) { printf("regcomp failed!\n"); regfree(&r); return -1; } ret = regexec(&r, to_match, 0, NULL, 0); if(!ret) { match = 1; printf("match!\n"); } else if(ret == REG_NOMATCH) { match = 0; printf("not match!\n"); } else { regerror(ret, &r, errmsg, sizeof(errmsg)); printf("regexec failed: %s!\n", errmsg); regfree(&r); return -1; } regfree(&r); return match; }有了这个函数,我们就可以根据学过的正则表达式知识,完成IP/MAC/DNS等的校验了。
IP地址校验
int check_ip(const char *ip) { int match; const char validIpAddress[] = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"; match = regex_exe(validIpAddress, ip); if(match != 1) { return -1; } return 0; }
MAC地址校验
int check_mac(const char *mac) { int match; const char validMacAddress[] = "^([a-fA-F0-9]{2}:){5}([a-fA-F0-9]{2})$"; printf("%s\n", mac); match = regex_exe(validMacAddress, mac); if(match != 1) { return -1; } return 0; }
DNS域名校验
int check_dns(const char *dns) { int match; const char validDnsRegex[] = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$"; printf("%s\n", dns); match = regex_exe(validDnsRegex, dns); if(match != 1) { return -1; } return 0; }
最后
这样我们就可以随意的使用正则表达式了,真是太棒了。
相关文章推荐
- win32 获取IP段分配情况 (DNS p2p 应用可能都会用到)
- 正则表达式判断时间的合法性
- ip的合法性判断
- 最简洁的IP判断正则表达式
- bash脚本判断ip合法性
- 关于java正则表达式的一点点过滤(java正则判断IP合法性)
- 路由跟踪命令.查看DNS、IP、Mac等
- ubuntu的终端下修改IP、MAC、DNS及GATE
- Java面试宝典系列之字符串转整型、判断IP合法性、求最大公约数
- PHP调用系统命令修改IP,netmask,gateway,mac,dns
- 编写一个判断IP地址合法性的bash脚本
- shell获取本地网卡IP,mac,掩码,dns,外网IP
- 路由跟踪命令.查看DNS、IP、Mac等
- C# System.Net.NetworkInformation 命名空间学习之NetworkInterface 类获取IP,DNS,Gateway,Mask, MAC等网络相关信息
- DOS 命令路由跟踪命令.查看DNS、IP、Mac等
- Linux学习之道:编写一个判断IP地址合法性的bash脚本
- android应用开发之判断wifi下局域网IP
- TCP/IP笔记 应用层(1)——DNS
- TCP/IP笔记 四.应用层(1)——DNS
- 上网原理大透析(MAC,IP,掩码,DNS)