Javascript заменяет открывающие и закрывающие скобки
у меня есть строка текста, например
[text1] [text2] [text3]
Я хочу заменить символ " ["символом" $ {"и"] "символом"}", но только в том случае, когда за " ["следует"]".
[text1] [[text2] [text3]
в результате
${text1} [${text2} ${text3}
как я могу это сделать с помощью regex в Javascript?
Я написал что-то вроде этого
someString = someString.replace(/[/g, "${");
someString = someString.replace(/]/g, "}");
но это не работает для моей проблемы, он просто заменяет каждый скоба.
1 ответов
вы можете использовать
var s = "[text1] [[text2] [text3]";
console.log(s.replace(/\[([^\][]+)]/g, "$${}"));
подробности
-
\[- a[char -
([^\][]+)- Группа 1: a отрицается класс символов соответствие любому 1 + chrs, кроме[и](обратите внимание, что внутри класса символов в регулярном выражении JS]char всегда должен быть экранирован, даже если он помещен в отрицаемый класс start) -
]- a]char (снаружи класса символов,]не является особенным и не должен быть экранирован).
в шаблоне замены, $$ означает буквальный $ чар { добавляет { чар вставляет значение группы 1, а затем это.