js字符串replace替换多个_jsstring正则表达式replace⽅法详解
replace⽅法是javascript涉及到正则表达式中较为复杂的⼀个⽅法,严格上说应该是string对象的⽅法。只不过牵扯到正则的时候⽐较多⼀
些。需要我们灵活的使⽤。
语法: place(regexp/substr,replacement);
第⼀个参数:必需。字符串中要替换的⼦串或正则RexExp;
第⼆个参数:必需,⼀个字符串值,规定了替换⽂本或⽣成替换⽂本的函数。
返回值:注意它的返回值是⼀个新的字符串,并没有更改原有字符串,是⽤ replacement 替换了 regexp 的第⼀次匹配或所有匹配之后得
到的。
所以根据它的参数的不同分为很多种情况,以下⼀⼀对各种情况加以分析:
NO.1 两个参数都是字符串
var str1 = '这是⼀段原始⽂本,需要替换的内容"这要替换"!';var newStr = place('这要替换','need replace');console.log( newStr );    //输出:这是⼀段原始⽂本
上⾯的例⼦中第⼆个参数字符串’need replace’,替换掉了第⼀个参数字符串’这要替换’。这是最简单的⼀种形式。
NO.2 第⼀个参数是正则,第⼆个参数是字符串
var str2 = '这是⼀段原始⽂本,需要替换的内容"ac这要替换bb"!';var newStr = place( /([a-z])+/g,'qqq' );console.log( newStr );    //输出:这是⼀段原始⽂本,需
上⾯的例⼦字符串’qqq’,替换了正则匹配的内容。如果 regexp 具有全局标志 g,那么 replace() ⽅法将替换所有匹配的⼦串。否则,它
只替换第⼀个匹配⼦串。
NO.3 第⼀个参数是正则,第⼆个参数是带$符的字符串
var str3 = '这是⼀段原始⽂本,"3c这要替换4d"!';var newStr = place( /([0-9])([a-z])/g,"$1" );console.log( newStr );    //输出:这是⼀段原始⽂本,"3这要替换4"!';
NO.4 第⼀个参数是正则,第⼆个参数函数
var str4 = '这是⼀段原始⽂本,需要替换的内容"aa这要bbb替换ccccc"!';var newStr = place( /[a-z]+/g,function ($0){    var str = '';    for (var i = 0; i < $0.length
上⾯的例⼦函数的第⼀个参数为匹配的regexp的整体,根据长度函数返回值为相应替换的⽂本;
jsreplace函数
NO.5 第⼀个参数是正则且有⼦表达式,第⼆个参数函数且带有多个参数
var str5 = '这是⼀段原始⽂本,需要替换的内容"3c这要替换4d"!';var newStr = place( /([0-9])([a-z])/g,function (arg1,arg2,arg3,arg4,arg5){ console.log( arg1
上⾯的例⼦第⼀个参数arg1表⽰匹配的整体,arg2表⽰第⼀个⼦表达式,arg3表⽰第⼆个⼦表达式,接下来的参数arg4是⼀个整数,声明
了表⽰⼦匹配在 stringObject 中出现的位置。最后⼀个参数是 stringObject 本⾝。
以上就是replace⽅法各种可能的情况。确实是⼀个需要深⼊理解的⽅法,不过确实也很强⼤的⼀个⽅法,值得深⼊研究!
下⾯看⼀道常见⾯试题:
题⽬:出⼀个字符串中出现次数最多的字符,并返回次数
第⼀种⽅法: 使⽤replace正则匹配
function maxStr(str){            let num = 0;            let char = '';            str = str.split('').sort().join('');            let reg = /(\w)\1+/g;            place(reg,($0,$1) => {
第⼆种:遍历
function maxStr(str){            let obj = {};            for(let i = 0;i                let key = str[i]                if(obj[key]){                    obj[key]++                }else{                    obj[key 感谢关注+转发

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。