Javascript заменить открывающие и закрывающие скобки - PullRequest
0 голосов
/ 28 августа 2018

У меня есть строка текста, например

[text1] [text2] [text3]

Я хочу заменить символ «[» на символ «$ {» и «]» на «}», но только в том случае, когда за «[» следует «]».

Например

[text1] [[text2] [text3]

должно привести к

${text1} [${text2} ${text3}

Как я могу сделать это с помощью регулярных выражений в Javascript?

Я написал что-то вроде этого

someString = someString.replace(/\[/g, "${");
someString = someString.replace(/]/g, "}");

Но это не работает для моей проблемы, оно просто заменяет каждую скобку.

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать

var s = "[text1] [[text2] [text3]";
console.log(s.replace(/\[([^\][]+)]/g, "$${$1}"));

Детали

  • \[ - [ char
  • ([^\][]+) - Группа 1: отрицательный класс символов , соответствующий любому 1+ chrs, кроме [ и ] (обратите внимание, что внутри класса символов в регулярном выражении JS, ] символ всегда должен быть экранирован, даже если он находится в начале отрицательного класса)
  • ] - символ ] (вне класса символов, ] не является специальным и не должен быть экранирован).

В шаблоне замены $$ обозначает буквальный символ $, { добавляет символ {, $1 вставляет значение группы 1, а затем добавляется }.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...