Регулярное выражение для формата yyyy-MM-dd

60
4

У меня есть регулярное выражение в asp.net, чтобы проверить входные данные в соответствии с форматом yyyy-MM-dd. Но всегда отображается "Пожалуйста, введите действительную дату", если входные данные являются даже действительной датой. Я пробовал некоторые регулярные выражения, но они также не работают.

В файле aspx

<asp:TextBox ID="DateFrom" runat="server" AutoPostBack="true" OnTextChanged="DateFrom_TextChanged"></asp:TextBox>
<asp:Image ID="Image1" runat="server" ImageUrl="IMAGES/icon-calendar.png" />
<ajaxToolkit:CalendarExtender ID="DateFrom_CalendarExtender" runat="server" Enabled="true" TargetControlID="DateFrom" Format="yyyy-MM-dd" PopupButtonID="Image1" />
<br /><asp:Label ID="DateFromMsg" runat="server" ForeColor="Red" Visible="false"></asp:Label>

В файле aspx.cs

protected void DateFrom_TextChanged(object sender, EventArgs e)
{
string regExp = @"/^((19|20)\d\d+)-(0[1-9]|1[012]+)-(0[1-9]|[12][0-9]|3[01])$/";
if(!Regex.IsMatch(DateFrom.Text, regExp))
{
DateFromMsg.Visible = true;
DateFromMsg.Text = "Please enter a valid date";
return;
}
BindData();
}

Примечание. Мой вопрос похож на этот пост: link Я сожалею о дублировании вопросов, потому что я действительно этого не заметил, и нашел решения, используя регулярное выражение.

спросил(а) 2021-01-14T00:43:09+03:00 1 неделя назад
1
Решение
74

Я бы использовал синтаксический анализ DateTime вместо regex. И я сильно подозреваю, что вы пытаетесь использовать MM specifier вместо mm. Потому что mm - это минуты, а MM - месяцы.

Также, основываясь на вашем регулярном выражении, вы пытаетесь проверить свой DateTime в 20-м или 21-м веке, вы можете проверить его свойство Year с этими границами века.

DateTime dt;
if(DateTime.TryParseExact(DateFrom.Text, "yyyy-MM-dd", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
{
if(dt.Year >= 1900 && dt.Year <= 2099)
{
// Your text is valid.
}
}

ответил(а) 2021-01-14T00:43:09+03:00 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема