I have different dates like this:
JavaScript
x
4
1
DD-MM-YY
2
DD.MM.YYYY
3
YYYY/MM/DD
4
But the delimiter in the dates could be a dash -
or a dot .
or forward slash /
.
I have tried regex that works but I need to check if date is entered with non-matching delimiters like this DD-MM/YY
then it should be invalid because the 1st delimiter is -
and 2nd one is /
.
My attempt so far:
JavaScript
1
2
1
/^dd?d?d?[-/.]d?d[-/.]dd?d?d?$/.test(userDate)
2
How can I check if the 2nd delimiter is same as 1st delimiter?
Advertisement
Answer
Working example using d
to capture digits, ([-/.])
to capture the first delimiter, and a regex backreference 1
to re-capture the same delimiter as in the first capture group:
JavaScript
1
15
15
1
function testUserDate(userDate) {
2
let regex = /^d{1,4}([-/.])d{1,2}1d{1,4}$/;
3
return regex.test(userDate);
4
}
5
6
console.log(testUserDate("2007-11-12")); // true
7
console.log(testUserDate("2007.11.12")); // true
8
console.log(testUserDate("2007/11/12")); // true
9
console.log(testUserDate("2007/11-12")); // false
10
console.log(testUserDate("2007.11/12")); // false
11
console.log(testUserDate("12-12-2007")); // true
12
console.log(testUserDate("12/12/2007")); // true
13
console.log(testUserDate("12.12.2007")); // true
14
console.log(testUserDate("12/12-2007")); // false
15
console.log(testUserDate("12-12.2007")); // false