Replace Multiple String at Once With Regex in Javascript

前端 未结 3 1933
走了就别回头了
走了就别回头了 2020-12-11 04:48

I tried this : Replace multiple strings at once And this : javascript replace globally with array how ever they are not working.

Can I do similar to this (its PHP):<

3条回答
  •  感情败类
    2020-12-11 05:32

    One possible solution:

    var a = ['a','o','e'],
        b = ['1','2','3'];
    
    'stackoverflow'.replace(new RegExp(a.join('|'), 'g'), function(c) {
        return b[a.indexOf(c)];
    });
    

    As per the comment from @Stephen M. Harris, here is another more fool-proof solution:

    'stackoverflow'.replace(new RegExp(a.map(function(x) {
        return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    }).join('|'), 'g'), function(c) {
        return b[a.indexOf(c)];
    });
    

    N.B.: Check the browser compatibility for indexOf method and use polyfill if required.

提交回复
热议问题