使用多个调用替换Javascript.replace(),一些调用使用变量,一些调用使用纯文本
代码:使用多个调用替换Javascript.replace(),一些调用使用变量,一些调用使用纯文本,javascript,regex,replace,Javascript,Regex,Replace,代码: var csMasterPrefix = 'CS_', cpMasterPrefix = 'CP_', csContentPrefix = 'CSContent_', cpContentPrefix = 'CPContent_'; /* ... */ $this.attr("id") .replace(csMasterPrefix,'') .replace(cpMasterPrefix,'') .replace(csContentPre
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();
问题:让我先说一下,我已经看了一些解决方案,这些解决方案可以让您自己实现“干净”功能。我的问题实际上不是如何做到这一点,而是如何生成一个将所有替换调用组合成一个的正则表达式?使用choice操作符|
和全局标志g
:
var to_replace = [csMasterPrefix, ..., 'ibtn', ...];
var id = $this.attr("id").replace(new RegExp(to_replace.join('|'), 'g'), '');
不知道这是否是最有效的解决方案,但它会起作用
或者,您可以循环使用
来替换
,并执行正常的字符串替换。请注意,如果来替换
包含特殊字符,例如(
和[
,
(和其他字符),则此函数不安全。由于ID不允许包含此类字符,所以您是安全的。@Lekensteyn:是的,您是对的。我没有提到这一点,因为OP的代码中没有特殊字符,但我应该。。。