Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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 - Fatal编程技术网

使用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:非常感谢。它确实像你写的那样工作。