리눅스 정규식을 이용한 IP / Email 주소 체크
#include <regex.h>
int Check_IP_Addr(char *addr)
{
regex_t state;
const char *pattern="^(([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])$";
regcomp(&state, pattern, REG_EXTENDED);
//0=success else=fail
return regexec(&state, addr, 0, NULL, 0);
}
int Check_Email_Addr(char *addr)
{
regex_t state;
const char *pattern="^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$";
regcomp(&state, pattern, REG_EXTENDED);
//0=success else=fail
return regexec(&state, addr, 0, NULL, 0);
}
int main(void)
{
int i, ret;
char *ip[]={"192.168.0.24", "192.168.0.753", "192.168.0.1"};
char *email[]={"afewgood@afewgood.net", "example@test.com", "nonmail"};
for(i=0; i<3; i++)
{
ret = Check_IP_Addr(ip[i]);
if(ret != 0) printf("[%d] Incorrect IP address\n", i);
ret = Check_Email_Addr(email[i]);
if(ret != 0) printf("[%d] Incorrect Email Address\n", i);
}
}
결과
[1] Incorrect IP address
[2] Incorrect Email Address