带循环的Javascript正则表达式模式数组

Tho*_*ggi 0 javascript regex arrays loops function

我试图创建一个函数来替换数组中的多个正则表达式值.如果数组不包含任何类型的引号,这是有效的,当我想在我的模式中使用逗号时,这是有问题的.所以我一直试图找到另一种服务模式的方法,没有运气.有任何想法吗?

function removeCharacters(str){
    //ucpa = unwanted character pattern array
    //var ucpa = [/{/g,/}/g,/--/g,/---/g,/-/g,/^.\s/];
    var ucpa = ["/{/","/}/","/--/","/---/","/-/","/^.\s/","/^,\s/"];
    for (var i = 0; i < ucpa.length; i++){ 
        //does not work
        var pattern = new RegExp(ucpa[i],"g");
        var str = str.replace(pattern, " ");
    }
    return str;
}
Run Code Online (Sandbox Code Playgroud)

工作方式:

function removeCharacters(str){
    //ucpa = unwanted character pattern array
    var ucpa = [/{/g,/}/g,/--/g,/---/g,/-/g,/^.\s/,/^,\s/];
    for (var i = 0; i < ucpa.length; i++){
        var str = str.replace(ucpa[i], " ");
    }
    return str;
}
Run Code Online (Sandbox Code Playgroud)

精制:

function removeCharacters(str){
    var pattern = /[{}]|-{1,3}|^[.,]\s/g;
    str = str.replace(pattern, " ");
    return str;
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

RegExp构造函数采用原始的表达,而不是包裹在/字符.因此,你的所有正则表达式都包含两个/s,这不是你想要的.

相反,您应该创建一组实际的正则表达式文字:

var ucpa = [ /.../g, /",\/.../g, ... ];
Run Code Online (Sandbox Code Playgroud)