通过js+正则获取字符串中括号
let regex = /\[(.+?)\]/g;
console.log(this.panel.skipUrl,'this.panel.skipUrl')
let options = this.panel.skipUrl.match(regex);
console.log(options,'第一次正则')
会得到一个数组,数组里面是当前字符串有多少个中括号,及其值。
动态修改字符串括号中参数
console.log(this.panel.skipUrl,'原本值')
console.log(newSelectNames,'需要匹配修改的数组')
for (let i = 0; i < options.length; i++) {
const optionInfo = options[i].replace(/\[|]/g, ''); //optionInfo:此处提取出括号中值,为了和替换数字进行对比取值用。
const reg = new RegExp('\\[' + optionInfo + '\\]', 'g'); //主要是这行代码(正常单个正则)
this.panel.skipUrl = this.panel.skipUrl.replace(reg, newSelectNames.find(it => it.label === optionInfo).value || '');//
}
console.log(this.panel.skipUrl,'替换后')
- 逻辑是循环了options,也就是知道了当前字符串有哪些需要进行替换。
- optionInfo:此处提取出括号中值,为了和替换数字进行对比取值用。
- reg:就是对应的正则,原本单个正则直接str.replace(/[name]/g,‘替换值’)即可,主要是此处是动态替换必须这样写,否则 \ 反斜杠会被解析掉。
- 最后进行replace替换即可
总结
核心代码是const reg = new RegExp('\\[' + optionInfo + '\\]', 'g');
。