C regex 匹配汉字的方法

网络上没有找到相关方案,试了半天,算是总算是ok, 分享之
#include   
#include 
#include 
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   
#include 
#include 
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 );
}

你可能感兴趣的:(c)