Javascript .replace() 多次调用,一些带有变量,一些带有纯文本

标签 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 将所有替换调用合并为一个的正则表达式?

最佳答案

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

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

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

或者,您可以遍历 to_replace 并进行正常的字符串替换。

关于Javascript .replace() 多次调用,一些带有变量,一些带有纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941185/

相关文章:

将多个单词替换为一个单词单个单词

javascript - 如何使用注入(inject)的 JavaScript 删除或覆盖页面上的函数?

java - 如何使用正则表达式验证二进制分数?

java - 使用 Java 正则表达式删除空行

R 中的正则表达式 - 替换 str

javascript - 滚动然后捕捉到顶部

Java删除包含引号的子字符串

javascript - Bootstrap Datetimepicker 从星期一开始

javascript - Three.js - 使用投影仪和射线选择顶点

javascript - AngularJS UI Bootstrap 模式无法执行范围内的功能