网络上没有找到相关方案,试了半天,算是总算是ok, 分享之
#include <stdio.h>
#include <regex.h>
#include <stdlib.h>
int check_nick ( const char * nick){
regex_t re;
int ret;
regmatch_t pm[10];
if ((ret= regcomp(&re, "^\\([一-龠]\\|[a-zA-Z]\\)\\([一-龠]\\|[0-9a-zA-Z]\\)\\{8,18\\}$" , 0)) == 0) {
if ((ret= regexec(&re,nick, 10, pm , 0)) == 0) {
regfree(&re);
return 1;
}else{
regfree(&re);
}
}
return 0;
}
int main(int argc, char *argv[])
{
int ret=check_nick(argv[1]);
printf(" check ret=%d \n", ret );
}
直接这样是不行的:
#include <stdio.h>
#include <regex.h>
#include <stdlib.h>
int check_nick ( const char * nick){
regex_t re;
int ret;
regmatch_t pm[10];
/*这样做是不行的*/
if ((ret= regcomp(&re, "^[一-龠a-zA-Z][一-龠0-9a-zA-Z]\\{8,18\\}$" , 0)) == 0) {
if ((ret= regexec(&re,nick, 10, pm , 0)) == 0) {
regfree(&re);
return 1;
}else{
regfree(&re);
}
}
return 0;
}
int main(int argc, char *argv[])
{
int ret=check_nick(argv[1]);
printf(" check ret=%d \n", ret );
}