Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript正则表达式在方括号(和前面的文本)中查找多个值_Javascript_Regex - Fatal编程技术网

使用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+
。检查谢谢,这两个都很好