Javascript .replace()包含多个调用,一些包含变量,一些包含纯文本

Cod*_*ick 3 javascript regex replace

码:

var csMasterPrefix = 'CS_',
    cpMasterPrefix = 'CP_',
    csContentPrefix = 'CSContent_',
    cpContentPrefix = 'CPContent_';

/* ... */

$this.attr("id")
    .replace(csMasterPrefix,'')
    .replace(cpMasterPrefix,'')
    .replace(csContentPrefix,'')
    .replace(cpContentPrefix,'')
    .replace('ibtn','')
    .replace('btn','')
    .replace('lbtn','')
    .replace('img','')
    .toLowerCase();
Run Code Online (Sandbox Code Playgroud)

问题:让我先说一下,我已经看过制定自己"干净"功能的解决方案.我的问题实际上不是如何做到这一点,而是我如何制作一个将所有替换调用合并为一个的正则表达式?

Fel*_*ing 8

通过使用RegExp,选择运算符|和全局标志g:

var to_replace = [csMasterPrefix, ..., 'ibtn', ...];
var id = $this.attr("id").replace(new RegExp(to_replace.join('|'), 'g'), '');
Run Code Online (Sandbox Code Playgroud)

不知道它是否是最有效的解决方案,但它会起作用.

替代方案你可以循环to_replace并做正常的字符串替换.