如何在JS中从字符串中删除带括号的术语



我有一个字符串[[a] bcd],我只想从中提取bcd。如何在Javascript中做到这一点?

您可能想要的是负前瞻(在内部数组上(和正前瞻(在最后结束的]上(的组合。这可以从以下内容中看出:

const str = '[[a] bcd]';
const regex = /(?![.+])([a-z]+)(?=]$)/g;
const matches = str.match(regex); // Array of matches
console.log(matches[0]);

我们可以尝试在这里使用带有回调函数的regex替换,以去除最外层括号内的任何嵌套括号内容:

var input = "[[a] bcd]";
var output = input.replace(/[(.*)]/, function(match, contents, offset, input) {
return contents.replace(/[.*?]|s+/g, "");
}
);
console.log(output);

为了理解这是如何工作的,第一个regex replace捕获最外面方括号(即[a] bcd(内的所有内容。然后,我们将这些内容传递给一个回调函数,该函数依次去掉所有带括号的内容或空白,只留下bcd

"[[a] bcd]".match(/(?<=[).*(?=])/)[0].replace(/[w*?]/,"").trim();
  1. 返回[和]中元素的匹配项
  2. 返回[和]下第一个元素内的匹配项
  3. 替换从1中找到的2的结果
  4. 修剪空间

最新更新