给定一个这样的字符串:
"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
在循环中运行 a 。
图案详情:
(\w+)
- 第 1 组:一个或多个单词字符(如果要匹配不能以数字开头的标识符,请替换为[_a-zA-Z]\w*
)\[
- 一个字面意思 [
(.*?)
- 第 2 组:除换行符以外的任何 0+ 个字符(如果您需要匹配任何字符 but ]
,请使用[^\]]*
)]
- 文字]
字符。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句