Regular expressions with lots of groups and backreferencing can be difficult to maintain, as adding or removing a capturing group in the middle of the regex turns to change the numbers of all the groups that follow the added or removed group.
In regex, we have facility of named groups, which solves the above issue. Let's look at it.
We can name a group by putting ?<name>
just after opening the paranthesis representing a group. For example, (?<year>\d{4})
is a named group.
Below is a code, we have already looked in capturing groups part. You can see, the code is more readable now.
var str = "2020-01-20";
// Pattern string
var pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
// Data replacement using $<group_name>
var ans=str.replace(pattern, '$<day>-$<month>-$<year>');
console.log(ans);
// Output will be: 20-01-2020
Backreference syntax for numbered groups works for named capture groups as well. \k<name>
matches the string that was previously matched by the named capture group name
, which is a standard way to backreference named group.