从javascript中的字符串中提取时间

时间:2016-02-03 10:57:31

标签: javascript regex

我是javaScript的新手,在处理一个简单的项目时,我遇到了这个问题。我有一个字符串,

var str = "11 hrs and 34 mins";

我只希望时间格式如11:34

所以我现在正在做的就像这样

var str = "11 hrs and 34 mins";
var time="";
var parts=str.split(" ");
for(var i=0;i<parts.length;i++){
    if(parseInt((parts[i].trim()), 10)){
        time+=parts[i]+" ";
    }   
}
console.log(time);

使用外部库或纯javaScript是否有更好的方法。 有人可以帮助我。

6 个答案:

答案 0 :(得分:3)

使用正则表达式将数字^([0-1][1-9]|[2][1-3]).+([0-5][0-9]).+与确切时间(0-23小时和分钟0-59)匹配:

var str = "11 hrs and 34 mins";
var time="";
var parts=str.match(/^([0-1][1-9]|[2][1-3]).+([0-5][0-9]).+/);

document.getElementById("res").innerHTML = parts[1] + " : " + parts[2];

console.log(parts[1] + " : " + parts[2]);
<span id="res"></span>

答案 1 :(得分:1)

正则表达式(根据您的需要调整):

(\d+)([a-zA-Z\s])+(\d+)

组号1和3将是数字 Example

答案 2 :(得分:0)

您可以使用以下正则表达式来提取时间值

/(\d+).+(\d+).+/

示例:

'11 hrs and 34 mins'.replace(/(\d+).+(\d+).+/, '$1:$2')

结果:'11:34'

或者您可以使用外部图书馆,例如Moment.js

答案 3 :(得分:0)

试试这个:

"11 hrs and 34 mins".replace(/.*?(\d+)\s*hrs.*?(\d+)\s*min.*/,"$1:$2")

答案 4 :(得分:0)

试试这个:

var str = "11 hrs and 34 mins";
var time= str.match(/\d+/g);
time = time.join(':');
console.log(time);

答案 5 :(得分:0)

尝试使用正则表达式。更多信息here

var timePattern = /\b\d+\b/g;
var extractedTime = "11 hrs and 34 mins".match(timePattern)

提取的时间应该具有这些值[“11”,“34”],所以你已经拆分这个数组以获得小时和分钟并将它们放在一起。