// 字符串的替換 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)); // 輸出 ["", "", ""]