RegExp.$1~9
被弃用后替换方法
参考文档: https://www.cnblogs.com/gaosj20210301/p/17348910.html
RegExp.$1
使用: 格式化日期。
Date.prototype.Format = function(fmt)
{ //author: meizz
var o = {
"M+" : this.getMonth()+1,
"d+" : this.getDate(),
"h+" : this.getHours(),
"m+" : this.getMinutes(),
"s+" : this.getSeconds(),
"q+" : Math.floor((this.getMonth()+3)/3),
"S" : this.getMilliseconds()
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
替换方法: RegExp的exec方法
const FormatDate = (date:Date, fmt:string):string =>{
const o:Map<string,number> = new Map<string,number>([
["M+",date.getMonth()+1],
["d+", date.getDate()],
["h+", date.getHours()],
["m+" , date.getMinutes()],
["s+" , date.getSeconds()],
["q+" , Math.floor((date.getMonth()+3)/3)],
["S" , date.getMilliseconds() ]
])
let re = /(y+)/
if(re.test(fmt)) {
const execArr = re.exec(fmt)
if(execArr) {
fmt=fmt.replace(execArr[1], (date.getFullYear()+"").substring(4 - execArr[1].length));
}
}
for(const item of o.entries()) {
re = new RegExp("("+ item[0] +")")
if(re.test(fmt)) {
const execArr = re.exec(fmt)
if(execArr) {
fmt = fmt.replace(execArr[1], (execArr.length==1) ? (item[1]+"") : (("00"+ item[1]).substring((""+ item[1]).length)));
}
}
}
return fmt;
}