[英]Can't put index value inside brackets using RegEx
有两个字符串。 我试图将索引值放在空括号内:
var capacity = 'room[price_group_ids][][capacity]';
var group = 'room[price_group_ids][][group][%s][]';
例如,如果索引为1,则它们应为:
var capacity = 'room[price_group_ids][1][capacity]';
var group = 'room[price_group_ids][1][group][%s][]';
如果索引为2,则它们应如下所示:
var capacity = 'room[price_group_ids][2][capacity]';
var group = 'room[price_group_ids][2][group][%s][]';
我尝试过的结果给了意外的结果:
var index = 2;
var capacity = 'room[price_group_ids][][capacity]'.replace(/\[(.+?)\]/g, "[" + index +"]"); // Should become room[price_group_ids][2][capacity]
var group = 'room[price_group_ids][][group][%s][]'.replace(/\[(.+?)\]/g, "[" + index +"]"); // Should become room[price_group_ids][2][group][%s][]
我不擅长RegEx,并寻求有关如何解决该问题的建议
一个简单的replace
应该在这里工作。
这只会替换[]
的第一次出现,因此您不必担心其他人。 g
标志用于全局替换,即所有出现的指定值
capacity.replace('[]', `[${index}]`);
var index = 2; var capacity = 'room[price_group_ids][][capacity]'; var group = 'room[price_group_ids][][group][%s][]'; capacity = capacity.replace('[]', `[${index}]`); group = group.replace('[]', `[${index}]`); console.log(capacity) console.log(group)
由于您想匹配[]
首次出现,因此请勿使用g
标志。 也不需要匹配其他任何内容(.+?)
,只需/\\[\\]/
就足够了。
另一种方法是将字符串[]
替换为[1]
let index = 2 console.log('room[price_group_ids][][capacity]'.replace(/\\[\\]/, `[${index}]`)); console.log('room[price_group_ids][][group][%s][]'.replace(/\\[\\]/, `[${index}]`));
reg exp /\\[(.+?)\\]/g
匹配[]
括号之间的1个或多个/\\[(.+?)\\]/g
。 您想彼此相邻检测[
和]
; 只是:
/\[\]/
另外,除非要对所有出现的[]
都进行替换,否则您要在结尾处放弃g
- g
表示global
。
但是,也有非正则表达式方法,如其他答案所示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.