new RegExp("(" + k + ")")如何理解

求助new RegExp("(" + k + ")")怎么理解?



// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子: 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
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;
}





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)));




这里的K是什么意思?

new RegExp("(" + k + ")")怎么理解?为什么要写成("(" + k + ")")这样?



if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));


这行代码什么意思?


------解决思路----------------------
如k的值是"M+"
"(" + k + ")"的结果是字符串"(M+)"
然后用这个字符串来创建正则表达式。

------解决思路----------------------
引用:
Quote: 引用:

如k的值是"M+"
"(" + k + ")"的结果是字符串"(M+)"
然后用这个字符串来创建正则表达式。


直接写成new RegExp(k)

这样行吗?


不行。加括号是为了在正则表达式中捕获子匹配,这样才能更新之后代码用到的RegExp.$1的值

------解决思路----------------------
引用:
("(" + k + ")")

括号里面包含括号怎么理解?

那两个加号是什么意思?


里面的括号在字符串的“”引号内,是个字符串
外面的括号是调用RegExp函数的语法

这样写你是否能理解呢
str = "(";
str = str + k;
str = str + ")";
new RegExp(str)

------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

如k的值是"M+"
"(" + k + ")"的结果是字符串"(M+)"
然后用这个字符串来创建正则表达式。


直接写成new RegExp(k)

这样行吗?


不行。加括号是为了在正则表达式中捕获子匹配,这样才能更新之后代码用到的RegExp.$1的值


for (var k in o)这个K不知道代表什么

RegExp("(" + k + ")")这个K代表着字母

o[k]我觉得这个K代表数字

这三个K的意思是一样的吗?


这三个K的意思是一样的

我说,你先去学学js和正则表达式的基础吧,没有基础你的问题会越问越多的