let i = "20220228";
let f = "YYYY-MM-DD";
let p = i.search(/[\-\.年月日\s]$/) == -1 ? false : true;
i = i.replace(/[^\d]/g, '').substr(0, 8);
o = ""
let formats = f.match(/YYYY|MM|DD/g),
seps = f.replace(/YYYY|MM|DD/g, '{!}').replace(/^{!}|{!}$/gm,'').split('{!}'),
len = 0,
cut_str = i,
sub_str = '',
is_error = false
;
for (let format of formats) {
len = format.length;
if (cut_str.length <= 0) {
break;
}
sub_str = cut_str.substr(0, len);
cut_str = cut_str.substr(len, cut_str.length);
switch (format) {
case 'YYYY':
o += sub_str;
break;
case 'MM':
if (sub_str.substr(0, 1) > 1) {
if (!moment(sub_str).isValid()) {
is_error = true;
break;
}
o += moment(sub_str).format(format);
} else {
o += sub_str;
}
break;
case 'DD':
if (sub_str.length > 1 || sub_str.substr(0, 1) > 2) {
if (!moment(o + sub_str).isValid()) {
is_error = true;
break;
}
o += moment(o + sub_str).format(format);
} else {
o += sub_str;
}
break;
default:
break;
}
if (is_error) {
break;
}
if (cut_str) {
o += seps.shift();
}
}
if (p && seps.length) {
o += seps.shift();
}
if (is_error) {
console.log("输入格式有错")
}
console.log("输出:"+ o)
console