I have different dates like this:
DD-MM-YY DD.MM.YYYY YYYY/MM/DD
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:
/^dd?d?d?[-/.]d?d[-/.]dd?d?d?$/.test(userDate)
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:
function testUserDate(userDate) { let regex = /^d{1,4}([-/.])d{1,2}1d{1,4}$/; return regex.test(userDate); } console.log(testUserDate("2007-11-12")); // true console.log(testUserDate("2007.11.12")); // true console.log(testUserDate("2007/11/12")); // true console.log(testUserDate("2007/11-12")); // false console.log(testUserDate("2007.11/12")); // false console.log(testUserDate("12-12-2007")); // true console.log(testUserDate("12/12/2007")); // true console.log(testUserDate("12.12.2007")); // true console.log(testUserDate("12/12-2007")); // false console.log(testUserDate("12-12.2007")); // false