我试过了:
/^([0-3][0-9])-(A-Za-z)-([0-1][0-9])?$/
并没有成功。我做错了什么?
谢谢大家!
答案 0 :(得分:4)
/^([0-3][0-9])-([A-Z]{3})-([0-1][0-9])$/
编辑:
/^(0[1-9]|[1-2][0-9]|3[0-1])-([A-Z]{3})-(0[1-9]|1[0-9])$/
答案 1 :(得分:3)
过于迂腐,这个正则表达式匹配它:22-NOV-09
。
如果您想要的是验证给定字符串是否是特定格式的验证日期,那么我建议使用strptime
之类的内容。例如:
#define _XOPEN_SOURCE
#include <time.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
struct tm tm;
char *p;
p = strptime(argv[1], "%d-%b-%y", &tm);
if (p && *p == '\0') {
printf("Matches\n");
return 0;
}
else {
printf("Didn't match\n");
return 1;
}
}
Python有datetime.datetime.strptime
,Perl有POSIX::strptime
。我相信大多数其他语言也可以使用这个功能。
答案 2 :(得分:1)
/^([0-3][0-9])-([A-Za-z]+)-([0-1][0-9])$/
答案 3 :(得分:1)
字符类用方括号表示。
/^([0-3][0-9])-([A-Za-z]+)-([0-1][0-9])?$/
答案 4 :(得分:0)
放弃?。你可以删除parens,除非你在拉子串匹配:
/^([0-3][0-9])-([A-Z][A-Z][A-Z])-([0-1][0-9])$/
或
/^[0-3][0-9]-[A-Z][A-Z][A-Z]-[0-1][0-9]$/