Skip to main content
 首页 » 编程设计

c#之我应如何解决此正则表达式方法以仅验证MM/DD/YYYY的日期

2024年01月22日26落叶无声

我是一名新的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); 
}