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

时间:2011-05-09 18:57:02

标签: 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();

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

1 个答案:

答案 0 :(得分:8)

使用RegExp,选择运算符|和全局标记g

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

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

替代方案,你可以循环to_replace并进行正常的字符串替换。