stringObject.replace(regexp/substr,replacement) 可以参考
第一个参数:可以是RegExp对象或是字符串,如果是字符串那么直接匹配字符串
第二个参数:是替换的文本或是返回替换文本的函数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//1.第一个参数直接用字符串匹配 第二个参数为文本
var str1 = 'GoodGoodStudy';
var result1 = str1.replace('Good','cctv');
console.log('result1======' + result1);//result1======cctvGoodStudy
//2.第一个参数直接用字符串匹配 第二个参数为返回替换文本的函数
var str2 = 'GoodGoodStudy';
var result2 = str2.replace('Good',function(str,key) {
return 'cctv';
});
console.log('result2======' + result2);//result2======cctvGoodStudy
//3.第一个参数用RegExp 第二个参数为文本
var str3 = 'GoodGoodStudy';
var result3 = str3.replace(/Good/g,'cctv');
console.log('result3======' + result3);//result3======cctvcctvStudy
//4.第一个参数用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)四个参数是什么意思?
//如果正则表达式中有分组(即有括号)那么有四个参数,第一个是匹配到的字符串,第二个是匹配到的最后一个分组
//第三个是匹配到的字符串第一个位置的索引,第四个是被匹配的字符串
//如果没有分组,那么只有三个参数,没有了分组这个参数。
//5.路径中参数替换。这是一个api路径中的{xxx}占位符替换成参数的方法。
var str = 'http://127.0.0.1/myapi/{personCode}/{followType}/find';
var nano = function (template, data) { //该方法摘自项目:)
return template.replace(/\{([\w\.]*)\}/g, function (str, key) {
var keys = key.split(".");
var v = data[keys.shift()];
for (var i = 0, l = keys.length; i < l; i++) {
v = v[keys[i]];
}
return (typeof v !== "undefined" && v !== null) ? v : "";
});
};
var strNew = nano(str,{personCode: '1654321',followType: 'C'});
console.log('strNew===' + strNew);//strNew===http://127.0.0.1/myapi/1654321/C/find
//上面的正则多匹配了\. 并且在funtion里面进行了处理,目的是可能会出现这样的{person.code}的占位,
//那么传入的参数为{person:{code:1654321},followType: 'C'}
</script>
</head>
<body></body>
</html>