使用 JavaScript 正则表达式在方括号(和前面的文本)中查找多个值



给定这样的字符串:

"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 matches = {}, m;
var reg = /(w+)[(.*?)]/gi;
while(m=reg.exec(query)) { 
matches[m[1]] = m[2];
}
console.log(matches);

您需要使用正则表达式文本,否则"["将变成"["并且不再匹配文本[

此外,要匹配所有匹配项,您需要在循环中运行RegExp#exec

图案详情

  • (w+)- 组 1:一个或多个单词字符(如果要匹配不能以数字开头的标识符,请替换为[_a-zA-Z]w*(
  • [- 字面[
  • (.*?)- 第 2 组:除换行符字符以外的任何 0+ 字符(如果需要匹配除]以外的任何字符,请使用[^]]*(
  • ]- 字面]字符。

最新更新