[英]Correct regex expression for searching with JavaScript
我有一个文本文件,如下所示:
time: 2014-5-15 9:12:5,Temperature 24.3 C, Humidity 20.1 % RH, Light 760
time: 2014-5-15 9:12:7,Temperature 24.4 C, Humidity 20.2 % RH, Light 757
time: 2014-5-15 9:12:9,Temperature 24.3 C, Humidity 20.2 % RH, Light 764
time: 2014-5-15 9:12:11,Temperature 24.3 C, Humidity 20.2 % RH, Light 753
time: 2014-5-15 9:12:13,Temperature 24.3 C, Humidity 20.1 % RH, Light 764
time: 2014-5-15 9:12:15,Temperature 24.3 C, Humidity 20.2 % RH, Light 759
我正在编写一些代码以从文件的每一行中搜索“时间”值,并将其发送到名为时间的数组。 代码如下:
var time=[];
time.push(Number(item.match(/time:(.\d+[.]\d+)/)[1]));
time.toString();
document.getElementById("chartContainer").innerHTML=time;
但是,时间值未显示在网页上。 item.match()中的正则表达式有问题吗? 我是JavaScript的新手,对JS中的regex真的不太了解。 请帮忙。
我认为最好将自己要匹配的内容明确化。 同样,即使输入格式发生更改,此解决方案也会从行中提取任何日期时间。
var time_regex = /(\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2})/;
// example
var lines = [
"time: 2014-5-15 9:12:5,Temperature 24.3 C, Humidity 20.1 % RH, Light 760",
"time: 2014-5-15 9:12:7,Temperature 24.4 C, Humidity 20.2 % RH, Light 757",
"time: 2014-5-15 9:12:9,Temperature 24.3 C, Humidity 20.2 % RH, Light 764",
"time: 2014-5-15 9:12:11,Temperature 24.3 C, Humidity 20.2 % RH, Light 753",
"time: 2014-5-15 9:12:13,Temperature 24.3 C, Humidity 20.1 % RH, Light 764",
"time: 2014-5-15 9:12:15,Temperature 24.3 C, Humidity 20.2 % RH, Light 759",
];
for (var i in lines) {
var r = lines[i].match(time_regex);
console.log(r);
}
// logs
// 2014-5-15 9:12:5
// 2014-5-15 9:12:7
// 2014-5-15 9:12:9
// 2014-5-15 9:12:11
// 2014-5-15 9:12:13
// 2014-5-15 9:12:15
如果输入格式统一,则无需正则表达式。
只需使用String.substring()和String.indexOf()提取时间即可。
例如,您可以抓取从第六个字符到第一个逗号的所有内容:
var comma = s.indexOf(',');
var time = s.substring(6, comma);
这不是更容易阅读和维护吗?
尝试这个:
var str = 'time: 2014-5-15 9:12:5,Temperature 24.3 C, Humidity 20.1 % RH, Light 760';
var params = str.replace('time: ', '').split(',');
var date = new Date(params[0]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.