поиск двойных скобок или двойных скобок с использованием регулярного выражения - PullRequest
0 голосов
/ 09 декабря 2018

Мне нужно выбрать значения в строке между двойными скобками и двойными скобками, но допускающие не двойные скобки и скобки

Я использовал следующее выражение для двойных скобок, но оносломан, если внутри строки есть скобка.это может быть нарушено только двойными скобками, но я не знаю, как сделать регулярные выражения

/{{([^}]*)}}/g

и

/\({2}([^)]*)\){2}/g

Я попытался добавить здесь двойные скобки, ноэто не работает:

/{{([^}}]*)}}/g

Ответы [ 3 ]

0 голосов
/ 09 декабря 2018

Я думаю, вам не хватает обратной косой черты в скобках.

Может быть, что-то вроде /\{\{([^)]+)\}\}/ будет работать

Пример:

console.log("{{TEST}}".match(/\{\{([^)]+)\}\}/)[1]);

console.log("{{TE{{}}ST}}".match(/\{\{([^)]+)\}\}/)[1]);

Надеюсь, что поможет

0 голосов
/ 09 декабря 2018

То, что сказал @ sureperformance, правильно.Я просто хочу добавить выражение для скобок и фигурных скобок, как вы просили в вопросе.

** Вы можете попробовать это как для скобок, так и фигурных скобок **

((?:{{)(.*?}}))|((?:\(\()(.*?\)\)))

Демо

const regex = /((?:{{)(.*?}}))|((?:\(\()(.*?\)\)))/gm;
const str = `foo{{bar}} foo{{baz}} foo{{with}bracket}}

foo((hello))


test{{test))

{{test))
{{test}}
((test))
test))
`;
let m;

let op = str.match(regex);
console.log(op);
0 голосов
/ 09 декабря 2018

Поскольку вы хотите разрешить одиночные фигурные скобки внутри, вы не должны использовать отрицательный набор символов - вместо этого начинайте с левого разделителя и лениво повторяйте любой символ, пока не доберетесь до правого разделителя.Например:

/{{(.*?)}}/

const pattern = /{{(.*?)}}/g;
const str = 'foo{{bar}} foo{{baz}} foo{{with}bracket}}';
console.log(str.match(pattern));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...