I am trying to validate a date entered into a text box. There is an input mask on the textbox which forces input of xx/xx/xxxx. I am trying to use a regular expression valid
As an alternative, you can use CompareValidator instead of RegularExpressionValidator. It goes like this:
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txtIssueDate" ErrorMessage="Invalid Date Format" Type="Date" Operator="DataTypeCheck" Display="Dynamic" Text="*" ForeColor="Red" ValidationGroup="valGroup1"></asp:CompareValidator>
The above regular expression is correct for dd/mm/yyyy format. the expression is
(^((((0[1-9])|([1-2][0-9])|(3[0-1]))|([1-9]))\x2F(((0[1-9])|(1[0-2]))|([1-9]))\x2F(([0-9]{2})|(((19)|([2]([0]{1})))([0-9]{2}))))$)
Last answer is actually the correct way to do. Use DateTime.TryParse
.
Example:
DateTime dt;
if(DateTime.TryParse(Textbox1.Text,out dt))
{
Label1.Text = "Invalid date format";
}
([0][1-9]|[1][0-9|][2][0-9]|[3][0-1])\/([0][1-9]|[1][0-2])\/[1-2][0-9][0-9][0-9]
for dd/mm/yyyy (year can be from 1000 to 2999)
or
(([0][1-9]|[2][0-9]|[3][0-1]|[1-9]|[1][0-9])/([0][1-9]|[1][0-2]|[1-9])/([1-2][0-9][0-9][0-9]|[0-9][0-9]))
which includes d/m/yy (e.g. 1/12/82)
Why not use one of the methods available in the System.DateTime namespace? You could use DateTime.TryParse() (edit: DateTime.TryParseExact() is probably the right suggestion) to accomplish the validation.
You can use DateTime.TryParseExact:
DateTime dt;
bool isValid = DateTime.TryParseExact(
"08/30/2009",
"MM/dd/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt);