const regex = /(
0?[1-9]|1[012]
)
[-\s\/.]
(0?[1-9]
|
[12][0-9]
|
3[01]
)
[-\s\/.]
((?:19|20)?\d\d)
(
(?:\s?(?:-\s*)?)
(?:
(?:
([01]?\d|2[0-3])
:)?
([0-5]?\d)
:)?
([0-5]\d)
(\s*AM|\s*PM)?
)?/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(
0?[1-9]|1[012]
)
[-\\s\\\/.]
(0?[1-9]
|
[12][0-9]
|
3[01]
)
[-\\s\\\/.]
((?:19|20)?\\d\\d)
(
(?:\\s?(?:-\\s*)?)
(?:
(?:
([01]?\\d|2[0-3])
:)?
([0-5]?\\d)
:)?
([0-5]\\d)
(\\s*AM|\\s*PM)?
)?', 'g')
const str = `Tue 01/24/12 1/24/2012 2:56:25 PM
2/23/15
02/02/05
05-02-2015
7/21/15 5:23
10/12/14 03:23
12/01/2013 5:36 PM
08/11/14 14:54
4/30/22 - 4:22 AM`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions