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库吧,这个库看起来很棒。