我需要选择双括号和双括号之间的字符串中的值,但允许非双括号和括号
我使用以下表达式进行双括号,但如果它在字符串中有一个支撑则会被破坏 . 这应该只能通过双支撑来打破,但我不知道如何制作正则表达式
/{{([^}]*)}}/g
和
/\({2}([^)]*)\){2}/g
我尝试在这里添加双括号,但它不起作用:
/{{([^}}]*)}}/g
@certainperformance所说的是正确的 . 我只想为你提出的问题添加括号和括号的表达式 .
您可以尝试使用括号和括号
((?:{{)(.*?}}))|((?:\(\()(.*?\)\)))
Demo
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);
因为你想在内部允许单个括号,所以你不应该使用负字符集 - 而是从左边界定开始并懒惰重复任何字符,直到你到达正确的分隔符 . 例如:
/{{(.*?)}}/
const pattern = /{{(.*?)}}/g; const str = 'foo{{bar}} foo{{baz}} foo{{with}bracket}}'; console.log(str.match(pattern));
我想你错过了括号中的反斜杠 .
也许像 /\{\{([^)]+)\}\}/ 这样的东西会起作用
/\{\{([^)]+)\}\}/
例:
console.log("{{TEST}}".match(/\{\{([^)]+)\}\}/)[1]);
console.log("{{TE{{}}ST}}".match(/\{\{([^)]+)\}\}/)[1]);
希望有所帮助
3 回答
@certainperformance所说的是正确的 . 我只想为你提出的问题添加括号和括号的表达式 .
您可以尝试使用括号和括号
Demo
因为你想在内部允许单个括号,所以你不应该使用负字符集 - 而是从左边界定开始并懒惰重复任何字符,直到你到达正确的分隔符 . 例如:
我想你错过了括号中的反斜杠 .
也许像
/\{\{([^)]+)\}\}/
这样的东西会起作用例:
console.log("{{TEST}}".match(/\{\{([^)]+)\}\}/)[1]);
console.log("{{TE{{}}ST}}".match(/\{\{([^)]+)\}\}/)[1]);
希望有所帮助