Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个调用替换Javascript.replace(),一些调用使用变量,一些调用使用纯文本_Javascript_Regex_Replace - Fatal编程技术网

使用多个调用替换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的代码中没有特殊字符,但我应该。。。