Skip to content

How to write regex to match equal pairs of delimiters?

I have different dates like this:


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:


How can I check if the 2nd delimiter is same as 1st delimiter?


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