stringObject.replace(regexp/substr,replacement)
这是W3C给出的关于replace()的用法,它有两个参数,第一个参数为被匹配的字符或正则,第二个参数常为字符串即待操作的原字符串。
简单地引用W3C的例子:
var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/, "W3School")
)
输出: Visit W3School
第二个参数为什么说常为字符串呢,因为第二个参数还可以是一个函数。
截选自网友文章 JavaScript replace()的使用和里面function()的说明
- 第一个参数用RegExp 第二个参数为返回文本的函数
- var str4 = 'i have 98 you have 66';
- var fun = function(template,data) {
- return template.replace(/(\d)+/g,function(str,group,firstIndex,template) {
- var v = data[str];
- return v;
- });
- };
- var result4 = fun(str4,{98: '第一个',66: '第二个'});
- console.log('result4======' + result4);//result4======i have 第一个 you have 第二个
- //那么function(str,group,firstIndex,template)四个参数是什么意思?
- //如果正则表达式中有分组(即有括号)那么有四个参数,第一个是匹配到的字符串,第二个是匹配到的最后一个分组
- //第三个是匹配到的字符串第一个位置的索引,第四个是被匹配的字符串
- //如果没有分组,那么只有三个参数,没有了分组这个参数。
现在就第二个参数为函数的情况举个例子
题目来自FCC:将字符串中的字符 &
、<
、>
、"
(双引号), 以及 '
(单引号)转换为它们对应的 HTML 实体
function convert(text){
return text.replace(/[<>"'&]/g, function(str, firstIndex, template){
switch(str){
case "<":
return "<";
case ">":
return ">";
case "&":
return "&";
case "\"":
return """;
case "\'":
return "'";
}
})
}