2010-10-26 2 views
2

Я искал какое-то время и не могу найти ничего, что связано с этим.C# ISO 8601 Проверка интервала времени

Мне нужно проверить интервал времени ISO 8601. Существует множество материалов о временах ISO 8601, но мне особенно нужен интервал. Я использую регулярное выражение, и это то, что у меня есть до сих пор;

Regex regEx = новое Regex (@ "^ P ((d) Y) ((d) + M) ((d) D) (T) ((d) + H) ((d) +) М) ((\ d + (() (\ г) (\ г)).???) С) $ ");

Таким образом, в основном это проверяет, полностью ли сформирована входная строка, например, 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)?)$