JavaScript日期格式化与正则表达式RegExp.$的用法

本文介绍了一个JavaScript日期格式化的实现方法,通过自定义Date.prototype.format函数,利用正则表达式匹配和替换来完成日期格式的转换。

今天有空就开写一个Calendar日历,在网上看到一个牛人写的JavaScript日期格式化的代码,看了一会有点晕。代码奉上:

/** * @param d the delimiter * @param p the pattern of your date * @author meizz * @author kimsoft add w+ pattern */ Date.prototype.format = function(style) { var o = { "M+" : this.getMonth() + 1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "w+" : "/u65e5/u4e00/u4e8c/u4e09/u56db/u4e94/u516d".charAt(this.getDay()), //week "q+" : Math.floor((this.getMonth() + 3) / 3), //quarter "S" : this.getMilliseconds() //millisecond } if (/(y+)/.test(style)) { style = style.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for(var k in o){ if (new RegExp("("+ k +")").test(style)){ style = style.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return style; }; 

看到上面代码有RegExp.$1,很茫然。查了一下才知道:

$1…$9是RegExp的一个属性, $1…$9:表示第n组匹配的结果,这个在正则表达式里有多个以()分组时有用。

JScript中String对象与正则表达式有关的操作有一个叫replace,可是要如何在replace中使用正则表达式匹配的结果呢?

    这时候我们就需要用到“匹配变量”了,匹配变量用于表示正则匹配的结果,以下是匹配变量的说明: 
    $& -- 表示全部匹配组匹配的结果,最后再啰嗦一次,匹配组就是正则表达式的()分组 
    $$ -- 表示$字符,因为匹配变量用掉了$字符,所以需要转义 
    $n -- 类似前面的$1…$9,表示第n组匹配的结果 
    $nn -- 很简单就是第nn组匹配的结果 
    $` -- 就是前面提到过的leftContext,比如abcdefg被匹配出了d那么abc就是它的leftContext了 
    $'  -- 和上面符合很接近不要看错了!,这个就是rightContext了

转载于:https://www.cnblogs.com/xingxiudong/archive/2009/03/03/3987114.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值