首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datetime正则表达式不工作

Datetime正则表达式不工作
EN

Stack Overflow用户
提问于 2013-01-16 22:11:38
回答 1查看 458关注 0票数 1

我很难在字符串中读到日期和时间的格式:

代码语言:javascript
复制
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字段之前加或减。

下面是我编写的正则表达式:

代码语言:javascript
复制
/^(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约定即可。

请注意,如果我删除了.或+ -,它就能正常工作(除了regex不再强制执行标准外)。我也试过不逃避反斜杠,但这也无济于事。

如果有人能指出这不起作用的原因,我会很感激的。请注意,如果正则表达式中有任何东西看起来很奇怪或多余,这很可能是我从逻辑上将其分解到各个字段中,以便更容易阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 01:13:20

我几乎没有改变你的正则表达式直到+14到-12部分。我不太清楚,你能看到它在这里起作用:http://www.regex101.com/r/jF1bA9

最终正则表达式:

代码语言:javascript
复制
^(1|2)[0-9]{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])\.[0-9]{4}(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-2])[0-5][0-9]$

正则表达式解释:

行的开始:^ //行的开始

年份:

(1|2)[0-9]{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])

期间:

\.

第二部分:

[0-9]{4}

匹配+14到-12 (您可能需要更改)

(\+0[0-9]|\+1[0-4]|-0[0-9]|-1[0-2])

比赛:+14 +13 +12 +11 +10 +09 +08 +07 +06 +05 +04 +02 +01 +00 -01 -02 -03 -04 -05 -06 -07 -08 -10 -11 -12

00 - 59:

[0-5][0-9]

终点站:

$

您可能需要更改它以使用特定的语言(我看到您在某些领域(如\\d)有双反斜杠)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14368825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档