我很难阅读具有以下格式的日期和时间的字符串:
YYYYMMDDHHmmSS.FFFF[+|-]ZZzz
YYYY
是年,MM
是月份(从 01 到 12 开始),DD
是第 (01-31) 天,HH
是小时 (00-23),mm
是分钟 (00-59),SS
是第二个(00-59),FFFF
是秒 (0000-9999) 的分数,ZZzz
是“与协调世界时 (UTC) 的小时(ZZ – 值从 +14 到 –12)和分钟(zz – 值 00 到 59)的差异。”
这是在 HL7 中传输日期时间信息的标准,但不要担心。我遇到的问题是处理我为此标准编写的正则表达式的系统拒绝让我在第二个字段后面添加点。它也不允许 ZZ 字段之前的加号或减号。
这是我写的正则表达式:
/^(1|2)\\d{3}(0[1-9]|1[0-2])(0[1-9]|(1|2)[0-9]|3(0|1))((0|1)[0-9]|2[0-3])[0-5][0-9][0-5][0-9]\\.\\d{4}((\\+|\\-)0[0-9]|\\-1[0-2]|\\+1[0-4])[0-5][0-9]$/
它适用于 Limesurvey,适用于给定问题的验证字段。如果你不知道那是什么,只要知道它的正则表达式使用 Perl 约定即可。
请注意,如果我删除 \. 或 \+ \-,它工作得很好(除了正则表达式不再强制执行标准)。我也尝试过不转义反斜杠,但这也无济于事。
如果有人能指出为什么这不起作用,我将不胜感激。请注意,如果正则表达式中有任何看起来奇怪或多余的东西,那很可能是我在逻辑上将其分解为各个字段以便于阅读。