如何验证标准C中合法字符的字符串?

时间:2009-08-21 07:38:32

标签: c regex

我想使用标准C来验证针对合法字符的字符串。是否有标准功能?据我所知,GNU Lib C的正则表达式lib在VC ++中不可用。你有什么建议来实现这么简单的任务。我不想包含PCRE库依赖项。我更喜欢更简单的实现。

2 个答案:

答案 0 :(得分:4)

您可以检查字符串是否包含strcspn的给定字符集中的任何字符。

按照Inshalla和maykeye的建议

编辑strspn, wcsspn可能更适合您的任务。

你可以这样使用strspn

#define LEGAL_CHARS "ABCDEFGHIJLKMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

if (strspn(str, LEGAL_CHARS) < strlen(str))
{
    /* String is not legal */

答案 1 :(得分:0)

明显的答案:写一个函数。或者在这种情况下有两个功能:

int IsLegal( char c ) {
    // test c somehow and return true if legal
}

int LegalString( const char * s ) {
    while( * s ) {
       if ( ! IsLegal( * s ) ) {  
          return 0;
       }
       s++;
    }
    return 1;
}