На этом шаге мы рассмотрим использованное на предыдущем шаге, регулярное выражение.
Регулярное выражение заключено между двумя символами слеша и имеет вид: /^\((.+)\)$/. Первый символ, ^, указывает, что сопоставление должно начинаться с начала строки. За ним следуют два символа, \(, совпадающие с открывающей круглой скобкой. Обратный слеш экранирует следующий за ним символ, сообщая механизму регулярных выражений, что он должен интерпретироваться буквально. Это совершенно необходимо, потому что круглые скобки входят в число символов, имеющих специальное назначение в регулярных выражениях, как мы увидим далее. Следующие четыре символа, (.+), совпадают с одним или более (о чем говорит квантификатор +) символами любого вида в той же строке (символу . соответствует любой символ) и помещают их в группу благодаря использованию круглых скобок. Последние три символа, \)$, совпадают с закрывающей скобкой в конце строки. Таким образом, все регулярное выражение целиком совпадает со строкой, начинающейся с открывающей круглой скобки, за которой следует группа произвольных символов, и заканчивающейся закрывающей круглой скобкой.
Метод .replace() отыскивает в контекстной строке подстроку, совпадающую с указанным регулярным выражением, и замещает ее другой строкой. Синтаксис метода имеет следующий вид:
'context'.replace(/regular-expression/, 'replacement')
В качестве контекстных строк в двух наших вызовах метода .replace() используются переменные requiredKey и conditionalKey. Мы уже рассмотрели регулярное выражение, заключенное между двумя символами слеша. Запятая отделяет регулярное выражение от замещающей строки, которая в обоих случаях имеет вид '$1'. Комбинация $1 - это выражение-заполнитель, представляющее первую группу в регулярном выражении. Так как в нашем регулярном выражении имеется одна группа, содержащая один или более символов, которую с обеих сторон окружают круглые скобки, замещающая строка будет содержать все символы, за исключением круглых скобок.
На следующем шаге мы вернемся к рассматриваемому примеру.