2010-10-26 92 views
2

我搜索了一段时间,似乎无法找到与此相关的任何内容。C#ISO 8601时间间隔验证

我需要验证一个ISO 8601时间间隔。有很多关于ISO 8601日期时间的东西,但我特别需要间隔。我正在使用正则表达式,这是我迄今为止; ((\ d +)M)((\ d +)D)(T)((\ d +)H)((\ d +)H)((\ d +)) M)((\ d +(()(\ d)(\ d))。???)S)$“);

因此,基本上这会检查输入字符串是否完全形成,例如P0Y0M1DT1H2M2.01S将被验证,但是标准规定较小的字符串(例如PT4S)也应该被接受。

如果有人能帮助我,我会非常感激。我一直在阅读有条件的正则表达式,但不太清楚如何处理它。

非常感谢。

回答

1

我创建了一个正则表达式,以获取有关信息的时间间隔在ISO 8601快来看看吧:

^(P((?<Years>\d+)Y)?((?<Months>\d+)M)?((?<Days>\d+)D)?)(T((?<Hours>\d+)H)?((?<Minutes>\d+)M)?((?<Seconds>\d+((.)?(\d)?(\d)?))S)?)$