我是一名新的C#开发人员,并且是第一次使用正则表达式。在为简单项目开发验证类时,我正在使用Regex开发一种验证用户输入日期的方法。该日期只能为MM / DD / YYYY格式。我已经开发了该方法,但是它给了我错误的验证,而且我不知道为什么。
这是C#Regex方法代码:
public bool ValidateDate(string dateInput)
{
Regex datePattern = new Regex("^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$");
return !datePattern.IsMatch(dateInput);
}
然后,由于我在ASP.NET中具有以下TextBox:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
代码隐藏:
protected void Button1_Click(object sender, EventArgs e)
{
Validator validator = new Validator();
if (TextBox1.Text.ToString() != "")
{
if (validator.ValidateDate(TextBox1.Text.ToString()))
{
lblMessage.Text = "Correct";
}
else
{
lblMessage.Text = "Incorrect";
}
}
else
{
lblMessage.Text = "Please enter a text";
}
}
当我尝试在此文本框中使用验证方法时,它给了我错误的结果。例如,当我输入11/10/2013时,它给了我错误。但是,当我输入2013/11/10时,它给了我正确的提示,我不知道为什么
您能帮我解决/修改此验证方法吗?
请您参考如下方法:
为此,请使用专用的DateTime.TryParseExact方法。
public bool ValidateDate(string dateInput)
{
DateTime dt;
return DateTime.TryParseExact(dateInput, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);
}
