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