user2037696
user2037696

Reputation: 1105

Javascript RegEx: validate date time

I am not very good with regex. I am being frustrated by a regular expression.

Example:

I have the following date time: 05/16/2013 12:00 am

I need a javascript regex that respect this format: mm/dd/yyyy hh:mm [am/pm]

 var dateReg = /^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/;
if(!dateReg.test(inputVal)) {
    $(this).after('<span class="error error-keyup-5">Invalid date format.</span>');
}

But this code works only for date, not with time. Thanks for your help.

Upvotes: 2

Views: 8717

Answers (3)

user663031
user663031

Reputation:

You should not be parsing dates and times yourself. Find a good library to do it. d3.js contains fine support for parsing dates and times according to formats you specify. See https://github.com/mbostock/d3/wiki/Time-Formatting.

Upvotes: 1

Klas Mellbourn
Klas Mellbourn

Reputation: 44377

A regexp for am/pm time can be found here:

/^(0?[1-9]|1[012])(:[0-5]\d) [APap][mM]$/

Upvotes: 1

Patrice Levesque
Patrice Levesque

Reputation: 2114

Your code snippet does only match the date, there are no atoms to match the time. Your regexp should be:

dateReg = /^[0,1]?\d\/(([0-2]?\d)|([3][01]))\/((199\d)|([2-9]\d{3}))\s[0-2]?[0-9]:[0-5][0-9] (am|pm)?$/

Upvotes: 2

Related Questions