如何使用正则表达式匹配RCF3339时间戳?

Bla*_*mba 6 regex erlang

我想检查RFC3339中描述的时间戳格式。

以下是示例:

"1996-12-19T16%3A39%3A57-08%3A00"

"1996-12-19T15%3A39%3A27%2E20-08%3A00"

"2013-07-08T18%3A07%3A13Z"

"2013-07-08T18%3A07%3A13.49Z“
Run Code Online (Sandbox Code Playgroud)

我运行了一个re模式,但是它仅适用于第一个和第二个示例。

"\\d{4}-\\d{2}-\\d{2}T\\d{2}%3A\\d{2}%3A\\d{2}(%2E\\d+)?[+-]\\d{2}%3A\\d{2}"
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 5

下面的正则表达式将匹配所有上述四个示例,

"^\\d{4}-\\d{2}-\\d{2}T\\d{2}%3A\\d{2}%3A\\d{2}(?:%2E\\d+)?[A-Z]?(?:[+.-](?:08%3A\\d{2}|\\d{2}[A-Z]))?$"
Run Code Online (Sandbox Code Playgroud)

演示

您忘记标记[+-]\\d{2}%3A\\d{2}为可选,也忘记添加正则表达式以匹配Z以及.49Z在第三和第四行。