Regular Expression Backreferences provide us a method to match a previously captured pattern a second time.
For example we have an string, and we want to any word which appear twice at the same time:
var str = "Time is the the most important thing thing."
var regex = /(the|thing)\s?/g;
Now it catch 'the' & 'thing', but we only want the first appear one.
var regex = /(the|thing)\s?(?=\1)/g;
--------------
Code:
var str = `Time is the the most important thing thing.`;var regex = /(the|thing)\s?(?=\1)/g;console.log(str.replace(regex, ''));/*"Time is the most important thing."*/
And of course, we can do better:
var regex = /(\w+)\s?(?=\1)/g;
----------------------------
Also we can use this tech to extract the html content:
var str = `Bolditalics`;
So, first we want to match <></>:
So, '\1' means capture the first group. '(?=)' means only the first appear one.
var regex = /<(\w+)><\/\1>/g;
Then we want to add secod catch group of the content:
var regex = /<(\w+)>(.*)<\/\1>/g;
var str = `Bolditalics`;var regex = /<(\w+)>(.*)<\/\1>/g;console.log(str.replace(regex, '$2\n'));/* "Bold italics"*/