簡體   English   中英

正確的正則表達式以使用JavaScript搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM