例如const value = "{id:1} - {id:3} + change({id:4})"。我只想將'{id:1}'和' {id:3}'提取出來
最后一个id:4 的排出条件不太明确,如果你确定取的是前两个,split 方法更清晰。正则的排出条件需要再明确一点,我用 )排出 最后一个 id:4 的项,不知道你能否用得上。
let str = "{id:1} - {id:3} + change({id:4})";
// 非正则
let res = str.split(/[-\+]/).map(item=>{
return item.trim();
});
console.log(res)
//['{id:1}', '{id:3}', 'change({id:4})']
// 正则方法
let res2 = str.match(/\{id:\d\}(?![\)])/g);
console.log(res2)
// ['{id:1}', '{id:3}']
如果有帮助,请采纳!
看了楼上几个回答,不通用,或者不能覆盖边界情况,比如value = "{id:1} - {id:3} + change({id:4}) - {id: 5}"
下面是完善后的正则,可以参考一下
value.match(/(?<=[^(]|^){.*?}(?=[^)]|$)/g)
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决