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, а затем это.