正则表达式来评估以下字符串

时间:2017-01-05 02:17:34

标签: javascript regex regular-language

我以

的形式获得用户输入
  

键1 =值,键2 =值,KEY3 =值3

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

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

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

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

3 个答案:

答案 0 :(得分:1)

尝试

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

删除尾随逗号

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

答案 1 :(得分: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]
}

不要忘记投票并接受:)

答案 2 :(得分:1)

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

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

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

obj = {}

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

console.log(obj)