Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用正则表达式解析javascript中的数据?_Javascript_Regex_Parsing - Fatal编程技术网

如何使用正则表达式解析javascript中的数据?

如何使用正则表达式解析javascript中的数据?,javascript,regex,parsing,Javascript,Regex,Parsing,如何在javascript中使用正则表达式将项及其值放入数组中 这是我的数据示例: battery.voltage: 13.50 battery.voltage.nominal: 12.0 beeper.status: enabled device.type: ups driver.name: blazer_ser driver.parameter.pollinterval: 2 谢谢为什么要使用正则表达式,您只需使用substr和indexOf。假设您的列表存储在一个数组中,您可以简单地循环

如何在javascript中使用正则表达式将项及其值放入数组中

这是我的数据示例:

battery.voltage: 13.50
battery.voltage.nominal: 12.0
beeper.status: enabled
device.type: ups
driver.name: blazer_ser
driver.parameter.pollinterval: 2

谢谢

为什么要使用正则表达式,您只需使用
substr
indexOf
。假设您的列表存储在一个数组中,您可以简单地循环遍历条目,并在第一次出现冒号时进行拆分

var items = [...]; // Your items.
var arr = {};
for (var i = items.length - 1; i >= 0; i--) {
    var key = items[i].substr(0, items[i].indexOf(':'));
    var value = items[i].substr(items[i].indexOf(':') + 1).trim();
    arr[key] = value;
}
此解决方案仅适用于实现
trim
方法的浏览器。如果希望保存,可以覆盖
字符串.prototype
并添加修剪方法。(见附件)

如果您将项目作为由换行符分隔的字符串,则可以通过
split
轻松将其拆分为一个数组

var list = "battery.voltage: 13.50\n"
         + "battery.voltage.nominal: 12.0\n"
         + "beeper.status: enabled\n"
         + "device.type: ups\n"
         + "driver.name: blazer_ser\n"
         + "driver.parameter.pollinterval: 2";​​
var items = list.split(/\n/);

请使用下面的代码执行此操作。。。这里变量
数据
包含您的数据

data=data.split(/\n+/);
var output={};
for(var i=0;i<data.length;i++){
     var a=data[i].split(/:\040+/);
     output[a[0]]=a[1];
}
例如:

output['driver.name'] === "blazer_ser"

下面是一个解决方案,它使用单个正则表达式只通过字符串数据一次:

var list = "battery.voltage: 13.50\n"
         + "battery.voltage.nominal: 12.0\n"
         + "beeper.status: enabled\n"
         + "device.type: ups\n"
         + "driver.name: blazer_ser\n"
         + "driver.parameter.pollinterval: 2";


function parse(data) {
    var match, result = {};            
    var pattern = /\s*([^:\s]+)\s*:\s*([^:\s]+)$/gm; 
    while (match = pattern.exec(data)) {
        result[match[1]] = match[2];
    }
    return result;
}

var test = parse(list);

// dump array
for (var i in test) 
    console.log(i + ": " + test[i]);

// select one
console.log(test["driver.parameter.pollinterval"]);

var list = "battery.voltage: 13.50\n"
         + "battery.voltage.nominal: 12.0\n"
         + "beeper.status: enabled\n"
         + "device.type: ups\n"
         + "driver.name: blazer_ser\n"
         + "driver.parameter.pollinterval: 2";


function parse(data) {
    var match, result = {};            
    var pattern = /\s*([^:\s]+)\s*:\s*([^:\s]+)$/gm; 
    while (match = pattern.exec(data)) {
        result[match[1]] = match[2];
    }
    return result;
}

var test = parse(list);

// dump array
for (var i in test) 
    console.log(i + ": " + test[i]);

// select one
console.log(test["driver.parameter.pollinterval"]);