代码:
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 正则表达式,将所有替换调用合并为一个?
答案 0 :(得分:8)
使用RegExp
,选择运算符|
和全局标记g
:
var to_replace = [csMasterPrefix, ..., 'ibtn', ...];
var id = $this.attr("id").replace(new RegExp(to_replace.join('|'), 'g'), '');
不知道它是否是最有效的解决方案,但它会起作用。
替代方案,你可以循环to_replace
并进行正常的字符串替换。