需要解释这个Javascript字符串大写原型

时间:2012-02-14 10:36:53

标签: javascript string replace

使用以下代码:

CSS:

input   {background-color:black; text-transform:capitalize;}

JS:

String.prototype.capitalize = function() { 
    return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ 
        return p1+p2.toUpperCase(); 
     }); 
};

HTML:

<input type="text" id="if1" onfocus="enterInp(this.id)" onblur="exitInp(this.id)" />

我很惊讶地发现即使在屏幕上正确显示输入文本字段的值也没有大写,所以我找到了一种方法。上面的脚本是从一个没有提供Q&amp; A设施的网站上收集的,虽然它工作正常,但我不明白它是如何工作的,我一直无法找到解释 - 我没有访问Javascript手册。

我不明白的是大胆的功能。使用alert我发现,对于每个大写的单词,mp2参数都包含要大写的字母,而p1似乎是null

有人可以告诉我这些mp1p2参数的来源以及它们是如何设置的?

1 个答案:

答案 0 :(得分:1)

匿名替换函数中使用的参数来自正则表达式/(^|\s)([a-z])/g中的匹配元素。匹配元素在括号内,p1是行开头或空格,p2是小写字母,m只是整个匹配的正则表达式。

该函数将连接匹配的元素,并将大写设置为行开头或空格后面的第一个字母。

输入值不会被删除,因为capitalize仅用于显示,但javascript代码中没有调用此函数。