用于评估以下字符串的正则表达式

Regular expression to evaluate following string

我收到

形式的用户输入

key1=value1,key2=value2,key3=value3

并且可以有任意数量的键值对,

我写了下面的正则表达式来评估上面的字符串。

[a-z0-9]+(:|=)[a-z0-9]+

但我不太确定,如何检查键值对的倍数,我写的这个字符串可以评估一个键值对,我想让它评估键值对的孔字符串。非常感谢对此的任何建议

尝试

([a-z0-9]+(:|=)[a-z0-9]+,?)+

删除尾随逗号

if(str.substr(-1) === ',')
  str = str.substr(0, str.length - 1)

试试这个正则表达式 (\w+)[:=](\w+),?,其中第 1 组匹配键,第 2 组匹配值。

你也可以使用拆分,它可能会更快。

var input = "your input";
var pairs = input.split(",")
for (i = 0; i < pairs.length; i++) {
    var parts = pairs[i].split(/[:=]/);
    var key = parts[0];
    var value = parts[1]
}

一种常见的方法是(滥用)使用 replace 一次完成工作:

str = "key1=value1,key2=value2,key3=value3"

re = /(\w+)[:=](\w+)/g

obj = {}

str.replace(re, (_, , ) => obj[] = )

console.log(obj)