如何使用正则表达式解析javascript中的数据?
如何在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。假设您的列表存储在一个数组中,您可以简单地循环
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"]);