Обратные ссылки
'text [tag]text[/tag]'.match(/\[([a-z]+)\][a-z]+\[\/\1\]/i);
/*
* результат:
* ["[tag]text[/tag]", "tag"]
*/
Разложим регулярное выражение на части.
Ищем текст который находится внутри квадратных скобок:
\[([a-z]+)\] // находит tag
и создаём на него обратную ссылку (
\1):
\[\/\1\] // находит \tag
Нумерация ссылок начинается с 1, слева на право в круглых скобках.
Квадратные скобки и косая черта экранируются обратной косой чертой, чтобы не было ошибки синтаксиса.
В статье рассмотрен механизм обратных ссылок регулярных выражений в javascript.