使用JavaScript正则表达式在方括号(和前面的文本)中查找多个值
给定如下字符串:使用JavaScript正则表达式在方括号(和前面的文本)中查找多个值,javascript,regex,Javascript,Regex,给定如下字符串: "fieldNameA[fieldValueA] fieldNameB[fieldValueB] fieldNameC[fieldValueC]" 我正在寻找一个正则表达式(或两个),它允许我构造一组键值对,例如 fieldNameA : "fieldValueA" fieldNameB : "fieldValueB" fieldNameC : "fieldValueC" 值将始终位于方括号中 方括号前始终会有字段名 字段名的长度可能不同 我试过这样的方法: const
"fieldNameA[fieldValueA] fieldNameB[fieldValueB] fieldNameC[fieldValueC]"
我正在寻找一个正则表达式(或两个),它允许我构造一组键值对,例如
fieldNameA : "fieldValueA"
fieldNameB : "fieldValueB"
fieldNameC : "fieldValueC"
- 值将始终位于方括号中
- 方括号前始终会有字段名
- 字段名的长度可能不同
const reg = new RegExp("fieldNameA|fieldNameB|fieldNameC\[(.*?)\]", "gi");
const matches = reg.exec(query);
但这不起作用。我只得到一个具有一个值的数组:“fieldNameA”您可以使用以下解决方案:
var query=“fieldNameA[fieldValueA]fieldNameB[fieldValueB]fieldNameC[fieldValueC]”;
var匹配={},m;
var reg=/(\w+)\[(.*?)]/gi;
而(m=reg.exec(query)){
匹配[m[1]]=m[2];
}
console.log(匹配项)
您可以使用此正则表达式,如果名称是硬编码的,您可以尝试使用var reg=/(fieldNameA | fieldNameB | fieldNameC)\[(.*?)\]/gi
。然后使用while(m=reg.exec(query)){/*dostuff*/}
。如果名称不固定,您可以像在其他建议中一样使用\w+
。检查谢谢,这两个都很好