C # ISO 8601 Проверка интервала времени - PullRequest
2 голосов
/ 26 октября 2010

Я искал некоторое время и не могу найти ничего, что связано с этим.

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

Regex regEx = new Regex (@ "^ P ((\ d +) Y) ((\ d +) M) ((\ d +) D) (T) ((\ d +) H) ((\ d +) M ) ((\ d + (() (\ d) (\ d)).?) S) $ ");

Таким образом, в основном это проверяет, полностью ли сформирована входная строка, например, P0Y0M1DT1H2M2.01S будет проверен, но стандарт утверждает, что меньшие строки, такие как PT4S, также должны быть приняты.

Если кто-нибудь сможет мне помочь с этим, я буду очень признателен. Я читал об условном регулярном выражении, но не слишком уверен, как с ним работать.

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 26 октября 2010

В конце концов я нашел ответ как часть вопроса, связанного с Scorm.

ссылка здесь, если кому-то удастся наткнуться сначала на мой пост;

Формат времени SCORM 2004- регулярное выражение?

1 голос
/ 04 апреля 2011

Я создал регулярное выражение для получения информации об интервале в ISO 8601. Проверьте это:

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