Javascript 如何替换字符串中的多个字符?

Javascript 如何替换字符串中的多个字符?,javascript,regex,Javascript,Regex,我想创建一个具有以下逻辑的正则表达式: 1.,如果字符串包含T将其替换为空格 2.如果字符串包含ZremoveZ 我已经写了两个正则表达式,但我不能将它们合并: string.replace(/\T/g,' ') && string.replace(/\Z/g,''); 编辑:我希望正则表达式代码更短您可以捕获两者,然后决定在回调中执行什么操作: string.replace(/[TZ]/g,(m => m === 'T' ? '' : ' ')); var字符串='

我想创建一个具有以下逻辑的正则表达式: 1.,如果字符串包含
T
将其替换为空格 2.如果字符串包含
Z
remove
Z

我已经写了两个正则表达式,但我不能将它们合并:

string.replace(/\T/g,' ') && string.replace(/\Z/g,'');

编辑:我希望正则表达式代码更短

您可以捕获两者,然后决定在回调中执行什么操作:

string.replace(/[TZ]/g,(m => m === 'T' ? '' : ' '));
var字符串='AZorro选项卡'
var res=string.replace(/[TZ]/g,(m=>m==='T'?“”));

console.log(res)
您是否在寻找类似的内容

ES6

香草的

"ATAZATA".replace(/[TZ]/g,function (char) {return key[char] || ''});


这似乎不需要正则表达式。只需2个链式替换即可

var str='[T]和[Z],但不是[T]和[Z];
var result=str.replace('T','').replace('Z','');

控制台日志(结果)您可以创建自定义函数来替换所需的所有字符:

const replaceAll = (text, obj) => {
    return [...text].map(each => {
        for (const o in obj){
            (each == o) ? each = obj[o] : o;
        }
        return each;
    }).join('');
};

replaceAll('abc', {'a':'x', 'b':'y'}); //"xyc"
下面是另一种使用
字符串的替代方法。prototype

String.prototype.replaceAll = function(obj) {
    let finalString = '';
    let word = this;
    for (let each of word){
        for (const o in obj){
            const value = obj[o];
            if (each == o){
                each = value;
            }
        }
        finalString += each;
    }

    return finalString;
};

'abc'.replaceAll({'a':'x', 'b':'y'}); //"xyc"

为什么要合并?只需使用
var res=string.replace(/\T/g')。replace(/\Z/g')
@VadimB我可以看到两个可能的原因:1:OP希望regex代码更短,2:OP希望将regex存储在对象或列表中Regex@nickzoum可能的副本也可以考虑替换的DICT,如<代码> {t:``,z:'} /c> >然后>代码> M= >替换[M]。
请记住,如果这是针对web@Liam的,那么您所说的是正确的,但是易读性方面的es6看起来更好,效率也更高
replace(string)
只替换一次。尝试使用
[T]和[Z]以及更多[Z]
@georg True,因此我在答案中添加了这一见解。谢谢。这是最简洁的,对我来说ES6语法非常有用。非常感谢。
const replaceAll = (text, obj) => {
    return [...text].map(each => {
        for (const o in obj){
            (each == o) ? each = obj[o] : o;
        }
        return each;
    }).join('');
};

replaceAll('abc', {'a':'x', 'b':'y'}); //"xyc"
String.prototype.replaceAll = function(obj) {
    let finalString = '';
    let word = this;
    for (let each of word){
        for (const o in obj){
            const value = obj[o];
            if (each == o){
                each = value;
            }
        }
        finalString += each;
    }

    return finalString;
};

'abc'.replaceAll({'a':'x', 'b':'y'}); //"xyc"