我有两种类型的字符串,如...
var a = "23 years 08months 12 days";
var b = "5 years 8 months 1 days";
我想减少这个字符串...
"23 years 08 months"
"5 years 8 months"
我尝试使用replace和split这样......
var a = "23 years 03 months 24 days";
var b = a.replace(/ /g,'')
var c;
if(b.length < 23){c = b.slice(0,13) }
但它不是常量的方法!有什么建议吗?
答案 0 :(得分:3)
这应该可以解决问题,而不使用正则表达式
var s = 'months';
var a = '23 years 03 months 24 days';
a = a.substring(0, a.lastIndexOf(s) + s.length);
答案 1 :(得分:1)
您可以尝试以下正则表达式:
(?<=months).*
(?&lt; =)是一个积极的后卫,它将确保您与。*匹配的所有内容都将以数月开头。
这将导致JS:
a.replace(/(?<=months).*/g,'');
答案 2 :(得分:1)
以下是一个工作示例,根据您的评论,表明您希望在几个月内切断:
var a = "23 years 08 months 12 days";
var b = "5 years 8 months 1 days";
console.log(a.split("months")[0]+" months");
console.log(b.split("months")[0]+"months");
&#13;
答案 3 :(得分:1)
您可以搜索并替换年份和月份值。
function yearMonth(s) {
return s.replace(/^(\d+)\s*years\s*(\d+)\s*months(.*)/, '$1 years $2 months');
}
console.log(yearMonth("23 years 08months 12 days"));
console.log(yearMonth("5 years 8 months 1 days"));
答案 4 :(得分:0)
只需在resolvers
上拆分,然后将字符串months
附加到拆分数组的第一个值:
months
&#13;
您还可以使用子字符串方法:
var a = "23 years 08 months 12 days";
var b = "5 years 8 months 1 days";
var res = a.split('months')[0] + 'months';
console.log(res);
res = b.split('months')[0] + 'months';
console.log(res);
&#13;