Как проверить несколько форматов дат в Regex? - PullRequest
0 голосов
/ 07 декабря 2010

Я ищу строку, чтобы получить 2 значения даты в формате мм / дд / гггг, м / д / гггг, м / дд / гггг или мм / д / гггг. Как мне добавить это условие к моему регулярному выражению?

private static readonly Regex dateRegex = new Regex(@"\d{2}/\d{2}/\d{4}");

Ответы [ 4 ]

6 голосов
/ 07 декабря 2010
private static readonly Regex dateRegex = new Regex(@"\d{1,2}/\d{1,2}/\d{4}");

Редактировать: После получения начальных совпадений попытайтесь проанализировать их, используя DateTime.TryParse, чтобы убедиться, что они действительно являются действительными датами. В противном случае ваше регулярное выражение будет значительно сложнее (см. Ответ Джеффа Медведя).

1 голос
/ 07 декабря 2010

Это сделает работу:

\d{1,2}\/\d{1,2}\/\d{4}
0 голосов
/ 07 декабря 2010

С "ИЛИ".В регулярном выражении "|":

"(regex1 | regex2)"

как:

Regex dateRegex = new Regex(@"(\d{1,2}/\d{1,2}/\d{4}|\d{1,2}\.d{1,2}\.d{1,4})");
0 голосов
/ 07 декабря 2010

Используйте регулярное выражение, как это (option1|option2)

| - это ИЛИ.

НО читая ваши примеры, я не думаю, что вам это нужно. Попробуйте вместо этого.

(?<month>[0-9]{1,2})\/(?<day>[0-9]{1,2})\/(?<year>[0-9]{4})

В предложении {n,m} n - это минимальное число, которое должно соответствовать, в то время как m - максимальное число.

ПРИМЕЧАНИЕ: где-то здесь есть комментарий к сообщению, в котором говорится об использовании [0-9] вместо \d, поскольку \d также может соответствовать некоторым символам Юникода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...