我有一个弦

{'lalala'} text before \{'lalala'\} {'lalala'} text after


我想获得方括号{,但前提是之前没有转义字符\

/(?:[^\\])\{/的种类,但在第一条语句中不起作用。

最佳答案

典型的方法是匹配非\前面的字符(或字符串的开头),然后将其放回替换逻辑中。



const input = String.raw`{'lalala'} text before \{'lalala'\} {'lalala'} text after`;

function replace(str) {
  return input.replace(/(^|[^\\])\{'(\w+)'\}/g,
    (_, chr, word) => chr + word.toUpperCase());
}

console.log(replace(input));

09-30 15:30