Ninja Mate, Не совсем понимаю как вы собираетесь это сделать с помощью одного регулярного выражения.
Вот так это примерно выглядело бы для текущего набора пар:
asferot, str - это ваша строка, match возвращает массив с совпадением или null. Если вам нужно вернуть это значение из функции например, тогда можно. Кстати я обновил ответ, на тот случай если у вас в строке есть разрывы строк.
zlodiak, Под индексом 0 находится "complete match" (полное совпадение), а с индекса 1 по индекс 12 включительно, это так называемые "capturing groups" (захватывающие скобки), то есть сопоставилась 1 из 12 (в вашем регулярном выражении их 12) в строке.
mmaximov97, Нет, параметр это по сути такая же переменная, которая может принимать любое значение при каждом вызове функции. У вас просто параметр называется так же как и id (box) и это ввело вас в заблуждение. А при вызове функции вы сами передали строку 'box': openbox('box');
mmaximov97, Так вы передаете строку 'box' в качестве аргумента, при вызове openbox('box'). Поэтому в первом getElementById() вы ссылаетесь на параметр функции (который содержит строку 'box'), а во втором getElementById() ссылаетесь на несуществующую переменную opener.