0
        dataValidation = "min:7 max:20 alphanumeric required";
        var params = [];
        dataValidation.replace(/([^\s]+).?/g, function(a, b){
             var split = b.split(':');
             if (split[1])
                params.push([split[0]] = split[1]);
             else
                params.push([split[0]] = true);
              return
            });

我的代码,我想用键和值,split[0] 和 split[1] 创建对象数组,但结果是这样的

[“7”、“20”、真、真]

代替

[{min:7}, {max:20}...]。

我也不确定在替换中创建函数是最好的方法。

4

2 回答 2

0

// 另一种选择,因为正则表达式是贪婪的

var output = [], tmp;
['foo:bar','bar:baz'].forEach(function(el, idx, arr) {
  tmp = {};
  tmp[el.substr(0,el.indexOf(':'))] = el.substr(el.indexOf(':')+1);
  output.push(tmp);
});
console.log(output);
//> [{bar:"baz"},{foo:"bar"}]
于 2013-10-08T12:33:52.677 回答
0

通过修改代码解决了

        dataValidation.replace(/([^\s]+).?/g, function(a, b){
            var split = b.split(':');
            var obj = {};
            if (split[1])
                obj[split[0]] = split[1];
            else
                obj[split[0]] = true;
            params.push(obj);
            return
        });
于 2013-10-08T12:32:24.197 回答