ISO 8601持续时间的Regex表达式



我一直在看ISO 8061维基百科-https://en.wikipedia.org/wiki/ISO_8601#Durations

我想创建一个正则表达式,以便:

允许输入

P1Y // date component only
P5W 

不允许输入

P1Y5W // No Year, month, week together. Just one of them.
P1Y2DT0H3M // No hour, minute, second

我试过

/^(-?)P(?=d|Td)(?:(d+)Y)?(?:(d+)M)?(?:(d+)([DW]))/

P1Y2DT0H3M没有通过,而P1Y2D(也不应该通过(

我该怎么办?

提前谢谢!

由于您只需要一个Y、M、D或W的句点说明符,因此可以使用以下正则表达式:

^Pd+[YMDW]$

最新更新