gpt4 book ai didi

c posix 正则表达式验证输入 HH :MM:SS time string

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:19 24 4
gpt4 key购买 nike

Regex pattern for HH:MM:SS time string相关我正在尝试验证用户时间输入。

int main(int argc, char *argv[]){
regex_t regex;
int reti;
char msgbuf[100];
char inputStr2[100]="12:34:04";
char inputStr[100]="12:34";

/* Compile regular expression */
reti = regcomp(&regex, "^((([01]?[0-9]|2[0-3]):)?([0-5]?[0-9]):)?([0-5]?[0-9])$", 0);
if( reti ){
fprintf(stderr, "Could not compile regex\n");
}

/* Execute regular expression */
printf("%s is the string\n",inputStr);
reti = regexec(&regex, inputStr, 0, NULL, 0);
if( !reti ){
puts("Match");
}
else if( reti == REG_NOMATCH ){
puts("No match");
}
else{
regerror(reti, &regex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
}
printf("%s is the string\n",inputStr2);
reti = regexec(&regex, inputStr2, 0, NULL, 0);
if( !reti ){
puts("Match");
}
else if( reti == REG_NOMATCH ){
puts("No match");
}
else{
regerror(reti, &regex, msgbuf, sizeof(msgbuf));
fprintf(stderr, "Regex match failed: %s\n", msgbuf);
}
/* Free compiled regular expression if you want to use the regex_t again */
regfree(&regex);

return 0;
}
  1. 我收到错误未知转义序列 '\d'。

这里有什么问题吗?这是验证用户时间输入的最佳方式吗?编辑:尝试使用 "^(?:(?:([01]?\\d|2[0-3]):)?([0-5]?\\d):)?([0- 5]?\\d)$" 和我没有匹配。还有

最佳答案

例如,您可以尝试 strptime()

struct tm t;
char p;

p = strptime(inputStr, "%H:%M:%S", &t);

if (p == NULL || *p != '\0') {
abort();
}

关于c posix 正则表达式验证输入 HH :MM:SS time string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9428586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com