正则表达式的帮助。修改正则表达式以排除花括号内的内容

问题描述 投票:0回答:2

在javascript中,我的正则表达式是:

let regEx = new RegExp("([A-Za-z])(?!([^<]+)?>)", "gi");

我的字符串是:

<span class="customer-key">{aaa}</span>bbb {ccc}

在上面的例子中,正则表达式匹配"aaa""bbb""ccc"

我想将我的正则表达式更新为EXCLUDE WITHIN花括号,以便它只匹配"bbb"

如何更新正则表达式?谢谢!

regex regex-negation
2个回答
2
投票

如果你想获得bbb,一个选项可能是使用dom,找到textnode(s)并删除花括号之间的内容:

const htmlString = `<span class="customer-key">{aaa}</span>bbb {ccc}`;
let div = document.createElement('div');
div.innerHTML = htmlString;
div.childNodes.forEach(x => {
  if (x.nodeType === Node.TEXT_NODE) {
    console.log(x.textContent.replace(/{[^}]+}/g, ''));
  }
});

请注意,不建议解析html with a regex

如果你想从你的示例字符串中获取bbb,另一个选项可能是匹配你不想保留的内容,并用空字符串替换它。

const regex = /\s*<[^>]+>\s*|\s*{[^}]+}\s*/gm;
const str = `<span class="customer-key">{aaa}</span>bbb {ccc}`;
const result = str.replace(regex, '');
console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.