Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex UNIX中的日期正则表达式_Regex_Date_Unix - Fatal编程技术网

Regex UNIX中的日期正则表达式

Regex UNIX中的日期正则表达式,regex,date,unix,Regex,Date,Unix,我正在尝试编写一个正则表达式来验证Unix中的日期。与常用格式中的日期匹配的正则表达式是mm/dd/yy 例如,它应该匹配03/20/98或11/08/89,但不匹配13/40/99 我设法在上找到了答案,但表达式在UNIX上不起作用 当我尝试验证日期时,下面的正则表达式不起作用 echo'12/01/2014'| grep'^0[13578]12478]12478]| 1[02]/| 0[469]|[469]| 11/| 2 | 02/[/]\d{4}$' 没有火柴 echo'2/1/2014

我正在尝试编写一个正则表达式来验证Unix中的日期。与常用格式中的日期匹配的正则表达式是mm/dd/yy

例如,它应该匹配03/20/98或11/08/89,但不匹配13/40/99

我设法在上找到了答案,但表达式在UNIX上不起作用

当我尝试验证日期时,下面的正则表达式不起作用

echo'12/01/2014'| grep'^0[13578]12478]12478]| 1[02]/| 0[469]|[469]| 11/| 2 | 02/[/]\d{4}$'

没有火柴

echo'2/1/2014'| grep'^0[13578]12478]12478]| 1[02]/| 0[469]|[469]| 11/| 2 | 02/[/]\d{4}$'


没有匹配项

有几种正则表达式格式;可能您正在尝试使用标准或扩展正则表达式,但使用链接答案中的PCRE

正如公认的答案所表明的那样,仅用正则表达式进行日期验证并不容易。如果您可以接受一个不完整的验证,那么这个简单的验证似乎通过了我的测试,并注意到在a | b语法中使用了egrep而不仅仅是grep:

给我:

01-01-48 is valid
13-01-99 is invalid
02-30-03 is valid
03-32-14 is invalid

但是,正如许多人在另一条线上所说的那样,验证一个月内天数和闰年数的正则表达式很快变得复杂起来。这个正则表达式只验证日期的每个部分本身是否有效-它不验证该月中是否存在该月的某一天。这就是为什么它认为03年02月30日是一个有效日期

不是很好的约会方式。欧洲人在逻辑上更喜欢dd/mm/yy,而计算机人更喜欢yyyymmdd,因为它不需要任何额外的工作就可以排序。更重要的是,你的描述不起作用并没有给我们任何帮助。编辑您的问题,包括您正在使用的常规表达式、示例输入和输出,以及错误消息或其他表明其不起作用的证据。我没有投反对票,但如果你不能提高你问题的质量,我会;-。。。。祝你好运为了补充Shelleter所说的,应尽量避免使用mm/dd/yy和dd/mm/yy,因为它们都允许有效日期为2014年2月3日或3月2日!YYYY-MM-DD不仅对齐了时间顺序和词汇顺序,而且还避免了这种歧义,直到某些区域性变得足够愚蠢,以至于开始写入YYYY-DD-MM,至少:+1以添加示例数据。似乎有点过分了。正如DanF在下面指出的,您仍然无法了解它是否是其月份的有效日期。你真的需要那种洞察力吗?祝你好运。我试过使用给定的正则表达式,但它既不起作用,也不起作用0在我的mac上运行正常。你使用的是什么操作系统?在GNU egrep上也为我工作过。你在哪一个系统上不工作?有些distos CentOS没有安装完整版本的东西,这让我感到困惑。egrep或grep在这个SunOS上不起作用。SunOS 5.10通用_147440-27 sun4u sparc SUNW,sparc Enterprise
01-01-48 is valid
13-01-99 is invalid
02-30-03 is valid
03-32-14 is invalid