我需要正则表达式在我的逻辑中以不同的方式解析日期和时间。
我尝试使用下一个模式:
^(\d{8})+(?:T((\d{6})[^Z])?).*$
我对输入数据的期望
19960404T010000Z
19960404T010000
19960404T
19960404
是
group1 | group2
-----------------
19960404 | 010000
19960404 | 010000
19960404 |
19960404 |
有人可以检查我的模式问题吗(它没有按预期工作)? 为了节省您的时间,我准备了example using regex checker .
最佳答案
你可以使用
^(\d{8})(?:T(?:(\d{6})Z?)?)?$
参见 regex demo
详情
^
- 字符串的开始(\d{8})
- 第 1 组:八位数字(?:T(?:(\d{6})Z?)?)?
- 一个可选的序列T
-T
(?:(\d{6})Z?)?
- 一个可选的序列(\d{6})
- 第 2 组:六位数字Z?
- 一个可选的Z
$
- 字符串结尾
关于regex - 在单独的匹配器中使用正则表达式解析日期和日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138657/