试图在javascript的字符串中匹配年份
我希望能够获取字符串数组: 下面是我正在使用的模拟数据试图在javascript的字符串中匹配年份,javascript,html,json,regex,Javascript,Html,Json,Regex,我希望能够获取字符串数组: 下面是我正在使用的模拟数据 const归档={ “数据”:[{ “id”:1, “类型”:“存档”, “属性”:{ “姓名”:“员工敬业度汇总表”, “说明”:“此处为报告说明”, “创建日期”:“2018年3月21日”, “日期范围”:“2018年1月3日-2018年5月15日”, “数据集”:“设施A,护理部” } }, { “id”:1, “类型”:“存档”, “属性”:{ “名称”:“抽样调查1”, “说明”:“此处为报告说明”, “创建日期”:“2017年
const归档={
“数据”:[{
“id”:1,
“类型”:“存档”,
“属性”:{
“姓名”:“员工敬业度汇总表”,
“说明”:“此处为报告说明”,
“创建日期”:“2018年3月21日”,
“日期范围”:“2018年1月3日-2018年5月15日”,
“数据集”:“设施A,护理部”
}
},
{
“id”:1,
“类型”:“存档”,
“属性”:{
“名称”:“抽样调查1”,
“说明”:“此处为报告说明”,
“创建日期”:“2017年3月21日”,
“日期范围”:“2017年1月3日-2017年5月15日”,
“数据集”:“设施A,护理部”
}
},
{
“id”:1,
“类型”:“存档”,
“属性”:{
“名称”:“抽样调查2”,
“说明”:“此处为报告说明”,
“创建日期”:“2016年3月21日”,
“日期范围”:“2016年1月3日-2016年5月15日”,
“数据集”:“设施A,护理部”
}
},
{
“id”:1,
“类型”:“存档”,
“属性”:{
“名称”:“抽样调查3”,
“说明”:“此处为报告说明”,
“创建日期”:“2015年3月21日”,
“日期范围”:“2015年1月3日-2015年5月15日”,
“数据集”:“设施A,护理部”
}
}
]
};
导出默认档案代码>var str=[
“2018年3月21日”,
“2017年3月21日f”,
“2016年3月21日”,
“2015年3月21日”,
“2014年3月21日”,
“2013年3月21日”,
“2012年3月21日”
];
//举办年会
让年份=[];
//迭代日期集合
for(设i=0;i1){
//替换所有非数字字符并修剪空白
设年份=拆分器[1]。替换(/\D/g')。修剪();
//将年值推送到新数组中
年。推(年);
}
}
//在控制台中查看结果
对数(年);
如果字符串的格式始终相同,则可以在,
上拆分。我使用regex/[^0-9]/gi
将年份中不是数字的任何内容替换为非字符'
。这会阻止像2017f
这样的事情包括f
var日期=[
“2018年3月21日”,
“2017年3月21日f”,
“2016年3月21日”,
“2015年3月21日”,
“2014年3月21日”,
“2013年3月21日”,
“2012年3月21日”
];
常数年=[];
用于(施工日期){
const year=date.split(“,”)[1]。替换(/[^0-9]/gi,”).trim();
年。推(年);
}
对数(年)代码>只需匹配四位数字,至少对于您的情况如此
(str=>str.match(/\d{4}/)[0])
var日期字符串=[
“2018年3月21日”,
“2017年3月21日f”,
“2016年3月21日”,
“2015年3月21日”,
“2014年3月21日”,
“2013年3月21日”,
“2012年3月21日”
];
var years=dateStrings.map(str=>str.match(/\d{4}/)[0]);
var ul=年。减少((ul,年)=>{
var li=document.createElement('li');
li.html=年;
ul.儿童(li);
返回ul;
},document.createElement('ul');
文件.正文.附件(ul)代码>使用匹配项并检查4位数字:/\d{4}/
var str=[
“2018年3月21日”,
“2017年3月21日f”,
“2016年3月21日”,
“2015年3月21日”,
“2014年3月21日”,
“2013年3月21日”,
“2012年3月21日”
];
设ul=document.querySelector('ul')
str.forEach(日期=>{
让matches=date.match(/\d{4}/)
matches.length>0?(ul.innerHTML+=`${matches[0]} `):null
})
试试这个:
var存档={
“数据”:[{
“id”:1,
“类型”:“存档”,
“属性”:{
“姓名”:“员工敬业度汇总表”,
“说明”:“此处为报告说明”,
“创建日期”:“2018年3月21日”,
“日期范围”:“2018年1月3日-2018年5月15日”,
“数据集”:“设施A,护理部”
}
},
{
“id”:1,
“类型”:“存档”,
“属性”:{
“名称”:“抽样调查1”,
“说明”:“此处为报告说明”,
“创建日期”:“2017年3月21日”,
“日期范围”:“2017年1月3日-2017年5月15日”,
“数据集”:“设施A,护理部”
}
},
{
“id”:1,
“类型”:“存档”,
“属性”:{
“名称”:“抽样调查2”,
“说明”:“此处为报告说明”,
“创建日期”:“2016年3月21日”,
“日期范围”:“2016年1月3日-2016年5月15日”,
“数据集”:“设施A,护理部”
}
},
{
“id”:1,
“类型”:“存档”,
“属性”:{
“名称”:“抽样调查3”,
“说明”:“此处为报告说明”,
“创建日期”:“2015年3月21日”,
“日期范围”:“2015年1月3日-2015年5月15日”,
“数据集”:“设施A,护理部”
}
}
]
};
var yearsRange=archives.data.map(obj=>obj.attributes.date\u范围);
var yearr=[];
yearsRange.filter(项目=>{
yearr.push(item.split('/')[2]。split('-')[0]);
});
控制台日志(“yearr”,yearr)代码>请发布您的代码。附加f是否已启用
var str = [
"March 21, 2018",
"March 21, 2017f",
"March 21, 2016",
"March 21, 2015",
"March 21, 2014",
"March 21, 2013",
"March 21, 2012"
];
//Array to hold the years
let years = [];
//Iterate your date collection
for(let i = 0; i < str.length; i++){
//Split the string on the comma
const splitter = str[i].split(",");
//If the split produces more than one string value, meaning we have a formatted date
if(splitter.length > 1){
//Replace any non digit characters and trim whitespace
let year = splitter[1].replace(/\D/g,'').trim();
//push year value into new array
years.push(year);
}
}
//View the results in console
console.log(years);