在c语言中用正则表达式实现对email地址和ip地址的验证
发布时间:2020-12-14 02:06:34 所属栏目:百科 来源:网络整理
导读:C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(), C语言中使用正则表达式一般分为三步: 编译正则表达式 regcomp() 匹配正则表达式 regexec() 释放正则表达式 regfree() 本篇文章主要是通过regcomp()、regexec()、regerro
|
C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(), 本篇文章主要是通过regcomp()、regexec()、regerror()、regfree()函数在c中的应用,复习正则表达式的用法。 程序一、email地址验证: #include <stdio.h>
#include <sys/types.h>
#include <regex.h>
int main(int argc,char * argv)
{
int status,i;
int cflags=REG_EXTENDED;
regmatch_t pmatch[1];
const size_t nmatch=1;
regex_t reg;
const char *pattern="^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$";
char *buf="sdlcwangsong@sina.cn";
regcomp(®,pattern,cflags);
status=regexec(®,buf,nmatch,pmatch,0);
if(status==REG_NOMATCH)
printf("No Matchn");
else if(status==0){
printf("Match:n");
for(i=pmatch[0].rm_so;i<pmatch[0].rm_eo;i++)
putchar(buf[i]);
printf("n");
}
regfree(®);
return 0;
}
其中验证email地址的正则表达式为:
表达式可以分为图中所示几部分,下面分别解释: ^:表示匹配的起始位置 w+:表示字母下划线数字出现一次或多次 ([-.]w+)* 表示-号 .号 字母 数字 下划线 出现零次或多次 *:表示这里可以跟任意个任意字符 .:表示固定的一个"." $:表示匹配的结束位置
程序执行后的匹配结果:
程序二、IP地址验证: #include <stdio.h>
#include <sys/types.h>
#include <regex.h>
int main(int argc,i;
int cflags=REG_EXTENDED;
regmatch_t pmatch[1];
const size_t nmatch=1;
regex_t reg;
const char *pattern="^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).){3}(25[0-5]|2[0-5][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$";
// const char *pattern="^((25[0-5]|2[0-4]d|[0-1]?d?d).){3}(25[0-5]|2[0-5]d|[01]?d?d)$";
char *buf="192.68.16.39";
regcomp(®,cflags);
status=regexec(?,0);
if(status==REG_NOMATCH)
printf("No Matchn");
else if(status==0){
printf("Match:n");
for(i=pmatch[0].rm_so;i<pmatch[0].rm_eo;i++)
putchar(buf[i]);
printf("n");
}
regfree(®);
return 0;
}
执行结果:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
