字符串为 ‘2017-5-11 10:10:00‘,正则 reg=/^(\d{4})[-/](\d{1,2})[-/](\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})$/g;
此正则代表通过若干个分组小正则,对字符串进行匹配,从左到右进行,首先匹配4个数字,[-/]代表-或/中的任意一个,再进行第二个分组匹配,由于是月份,所以匹配1、2个数字,日也如此;字符串中间的空格,可以通过实际的空格进行匹配,如要匹配多个空格,敲入空格和+即可。
//第一,将指定格式的时间字符串中的年月日等信息存在一个数组 var str=‘2017-5-11 10:10:00‘,reg=/^(\d{4})[-/](\d{1,2})[-/](\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})$/g,ary=[]; str.replace(reg,function(){ console.log(arguments) //["2017-5-11 10:10:10", "2017", "5", "11", "10", "10", "10", 0, "2017-5-11 10:10:10", callee: function, Symbol(Symbol.iterator): function] ary=[].slice.call(arguments); //将arguments类数组转为数组 ary=ary.slice(1,7); }) //第二,设置目标时间格式,把数组中对应的项替换到指定的区域 var resStr = ‘{0}年{1}月{2}日 {3}时{4}分{5}秒‘; // var ary = [‘2015‘,‘6‘,‘10‘,‘14‘,‘53‘,‘0‘]; var reg = /{(\d+)}/g; resStr = resStr.replace(reg,function(){ console.log(arguments);//["{0}", "0", 0, "{0}年{1}月{2}日 {3}时{4}分{5}秒", callee: function, Symbol(Symbol.iterator): function] var num = arguments[1],val = ary[num]; val.length==1 ?val=‘0‘+val : void 0; console.log(val); return val; //将匹配到的替换为val }) console.log(resStr); //上面的匿名函数执行的次数,取决于正则能在字符中捕获多少次,正则在resStr中捕获6次,所以我们的匿名函数执行6次
结果如下:2017年05月11日 10时10分00秒
时间: 2024-11-08 14:34:10