使用JavaScript搜索时正确的正则表达式
我有一个文本文件,如下所示:使用JavaScript搜索时正确的正则表达式,javascript,regex,Javascript,Regex,我有一个文本文件,如下所示: 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
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;
我正在编写一些代码来搜索文件中每一行的“time”值,并将其发送到一个名为time的数组。代码如下:
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中的正则表达式不太了解。请提供帮助。如果输入具有统一格式,则不需要正则表达式 只需使用String.substring()和String.indexOf()来提取时间 例如,您可以获取从第6个字符到第一个逗号的所有内容:
var comma = s.indexOf(',');
var time = s.substring(6, comma);
这不是更容易阅读和维护吗?如果输入具有统一格式,则不需要正则表达式 只需使用String.substring()和String.indexOf()来提取时间 例如,您可以获取从第6个字符到第一个逗号的所有内容:
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]);
试试这个:
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]);
我认为最好是明确你所匹配的内容。此外,此解决方案将从行中提取任何日期时间,即使输入格式发生更改
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
我认为最好是明确你所匹配的内容。此外,此解决方案将从行中提取任何日期时间,即使输入格式发生更改
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
调用item.match后,您的
time
数组中是否确实有值?请尝试/(time:)([^,]*)(,)/
我编写了innerHTML行以在网页上显示时间数组,以检查值是否存在。页面上没有显示任何内容。在调用item.match之后,您的时间数组中是否确实有值?请尝试/(时间:)([^,]*)(,)/
我编写了innerHTML行以在网页上显示时间数组,以检查值是否存在。页面上没有显示任何内容。我同意,但他需要使用indexOf,因为位置可以根据两位数或一位数而变化number@jahroy:非常感谢。我同意,但他需要使用indexOf,因为位置可以根据两位数或一位数而变化number@jahroy:非常感谢。它确实像你写的那样工作。