我有一个字符串[[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的结果
- 修剪空间