Javascript正则表达式帮助将字符串拆分为天、小时、分钟(“s”或“no”s)

Javascript正则表达式帮助将字符串拆分为天、小时、分钟(“s”或“no”s),javascript,Javascript,我有一根绳子 var str = "2 Days, 2 Hours 10 Minutes"; 如果我: str.split(/Days/); 我得到: ["2 ", ", 2 Hours 10 Minutes"] 所以我想我可以使用string.split来拆分我的字符串,用这个方法得到“天”、“小时”和“分钟” 但是,当我有时有“s”或没有“s”时,我该怎么办,例如: var str = "1 Day, 2 Hours 10 Minutes"; 这里我的字符串是“1天”而不是“2天”,

我有一根绳子

var str = "2 Days, 2 Hours 10 Minutes";
如果我:

str.split(/Days/);
我得到:

["2 ", ", 2 Hours 10 Minutes"]
所以我想我可以使用string.split来拆分我的字符串,用这个方法得到“天”、“小时”和“分钟”

但是,当我有时有“s”或没有“s”时,我该怎么办,例如:

var str = "1 Day, 2 Hours 10 Minutes";
这里我的字符串是“1天”而不是“2天”,所以“天”值上没有“s”。有没有办法把一根绳子分开

Day(s)
Hour(s)
Minute(s)
当然可以:

当然可以:


您正在使用正则表达式进行拆分,因此只需在“s”后面加一个问号,即可将其设置为可选:

str.split(/Days?/);
您可能还希望通过在正则表达式中添加
i
标志使其不区分大小写:

str.split(/days?/i);
您还可以使用
match
string方法(而不是
split
)在一行中完成整个操作,如下所示:

("2 Days, 3 hours, 5 minutes").match(/(\d+)\s*days?\,?\s*(\d+)\s*hours?\,?\s*(\d+)\s*minutes?/i)
["2 Days, 3 hours, 5 minutes", "2", "3", "5"]
将返回如下数组:

("2 Days, 3 hours, 5 minutes").match(/(\d+)\s*days?\,?\s*(\d+)\s*hours?\,?\s*(\d+)\s*minutes?/i)
["2 Days, 3 hours, 5 minutes", "2", "3", "5"]
因此,位置1、2和3中的项目分别是天、小时和分钟

要将正则表达式分解为英语:

  • (捕获的组,即数组项1)1个或多个数字
  • 零个或多个空白字符
  • 一天
  • 可选s
  • 可选逗号
  • 零个或多个空白字符 ... 重复几小时几分钟

检查文档中字符串的正则表达式匹配,以及有关如何使用正则表达式的优秀文档。

您正在使用正则表达式进行拆分,因此只需在“s”后面加一个问号,即可选择:

str.split(/Days?/);
您可能还希望通过在正则表达式中添加
i
标志使其不区分大小写:

str.split(/days?/i);
您还可以使用
match
string方法(而不是
split
)在一行中完成整个操作,如下所示:

("2 Days, 3 hours, 5 minutes").match(/(\d+)\s*days?\,?\s*(\d+)\s*hours?\,?\s*(\d+)\s*minutes?/i)
["2 Days, 3 hours, 5 minutes", "2", "3", "5"]
将返回如下数组:

("2 Days, 3 hours, 5 minutes").match(/(\d+)\s*days?\,?\s*(\d+)\s*hours?\,?\s*(\d+)\s*minutes?/i)
["2 Days, 3 hours, 5 minutes", "2", "3", "5"]
因此,位置1、2和3中的项目分别是天、小时和分钟

要将正则表达式分解为英语:

  • (捕获的组,即数组项1)1个或多个数字
  • 零个或多个空白字符
  • 一天
  • 可选s
  • 可选逗号
  • 零个或多个空白字符 ... 重复几小时几分钟

检查文档中字符串的正则表达式匹配,以及如何使用正则表达式的优秀文档。

如果您试图将天/小时/分钟放入一个3元素数组中,并且您可以保证您的输入总是有一个值(即使该值为0),消除所有非数字和非空格,然后在空格上拆分并删除空元素可能更简单

var result = new Array();
var tempstr = str.replace(/[^0-9\s]/g, ''); 
var arr = tempstr.split(' ');

for(var i = 0; i<arr.length; i++) {
    if (arr[i]) {
        result.push(arr[i]);
    }
}
var result=new Array();
var tempstr=str.replace(/[^0-9\s]/g');
var arr=临时拆分(“”);

对于(var i=0;i.

如果您试图将天/小时/分钟放入一个3元素数组中,并且您可以保证您的输入总是有一个值(即使该值为0),那么消除所有非数字和非空格,然后按空格分割并删除空元素可能更简单

var result = new Array();
var tempstr = str.replace(/[^0-9\s]/g, ''); 
var arr = tempstr.split(' ');

for(var i = 0; i<arr.length; i++) {
    if (arr[i]) {
        result.push(arr[i]);
    }
}
var result=new Array();
var tempstr=str.replace(/[^0-9\s]/g');
var arr=临时拆分(“”);

对于(var i=0;i.

如果某事物中有0个,它将如何表现?如
1天,0小时1分钟
0天,0小时,0分钟
?如果某事物中有0个,它将如何表现?如
1天,0小时1分钟
0天,0小时,0分钟
?这提供了三个单独的数组,其中没有一个是实际的OP。)lly正在寻找。从示例中,不太清楚OP是否需要任何东西,除了使用可选的“s”进行拆分的方法。这提供了三个独立的数组,OP实际上并不需要这些数组。从示例中,不太清楚OP是否需要任何东西,除了在旁注上使用可选的“s”进行拆分的方法-我强烈推荐ch如果你在使用dates.OMG,那么就去看看MomentJS库吧。顺便说一下,如果你在使用dates.OMG,那么我强烈建议你去看看MomentJS库吧,这个库看起来很棒。