// 字符串的替换 String.replace(要替换的字符串, 替换成的字符串),未找到指定字符串则原样输出原字符串 var str = "cat, bat, sat, fat"; var pattern = /.at/; console.log(str.replace("at", "boy")); // 输出 cboy, bat, sat, fat // 第一个参数可以使用字符串或RegExp,如果想全局替换或忽略大小写只能使用 RegExp 形式 console.log(str.replace("AT", "boy")); // 输出 cat, bat, sat, fat console.log(str.replace(/at/g, "boy")); // 输出 cboy, bboy, sboy, fboy console.log(str.replace(/AT/gi, "boy")); // 输出 cboy, bboy, sboy, fboy // 第二个参数是字符串时,可以使用特殊字符序列 // $' 匹配的字符串之后的子字符串 console.log(str.replace(/.at/, "boy($')")); // 输出 boy(, bat, sat, fat), bat, sat, fat console.log(str.replace(/.at/g, "boy($')")); // 输出 boy(, bat, sat, fat), boy(, sat, fat), boy(, fat), boy() // $` 匹配的字符串之前的子字符串 console.log(str.replace(/.at/, "boy($`)")); // 输出 boy(), bat, sat, fat console.log(str.replace(/.at/g, "boy($`)")); // 输出 boy(), boy(cat, ), boy(cat, bat, ), boy(cat, bat, sat, ) // $nn 匹配第nn个子字符串,nn 为 00~99 console.log(str.replace(/(.at)/, "boy($01)")); // 输出 boy(cat), bat, sat, fat console.log(str.replace(/(.at)/g, "boy($01)")); // 输出 boy(cat), boy(bat), boy(sat), boy(fat) // g 标识的存在会导致指针的后移 // 第二个参数可以是函数,function(第一个捕获组的匹配项,第二个捕获组的匹配项,.... , 匹配项在字符串中的位置, 原始字符串),该函数的返回值应该是一个字符串,以替换匹配项,使用函数可以对字符串进行更精细的操作 var replacefunc = str.replace(/cat/, function(match, pos, orgtext){ console.log(match); // 输出 cat console.log(pos); // 输出 0 console.log(orgtext); // 输出 cat, bat, sat, fat return "Hello"; }); console.log(replacefunc); // 输出 Hello, bat, sat, fat // 最后补充一个模式匹配的方法 String.split(分隔符[, 返回数组的大小]),该方法用于将字符串以指定分隔符拆分成数组,返回值是一个数组,分隔符可以是字符串,也可以是 RegExp console.log(str.split(",")); // 输出 ["cat", " bat", " sat", " fat"] console.log(str.split(",", 3)); // 输出 ["cat", " bat", " sat"] console.log(str.split(/[^/,]./, 3)); // 输出 ["", "", ""]