使用Regex改进此递归搜索

时间:2016-06-11 07:18:50

标签: javascript arrays regex ereg

我试图通过使用Regex而非常规替换来改进我的代码的一部分,以获得干净的字符串以提交给Solr的客户端。

selected: true

可能存在使用正则表达式的方法吗?

我试图替换

String.prototype.replaceArray = function(find, replace) {
        var replaceString = this;
        for (var i = 0; i < find.length; i++) {
            replaceString = replaceString.replace(find[i], replace[i]);
        }
        return replaceString;
    };

var match = [
                    '\\',
                    '+',
                    '-',
                    '&',
                    '|',
                    '!',
                    '(',
                    ')',
                    '{',
                    '}',
                    '[',
                    ']',
                    '^',
                    '~',
                    '*',
                    '?',
                    ':',
                    '"',
                    ';',
                    ' '
                ];        
                var replace = [
                    '\\\\',
                    '\\+',
                    '\\-',
                    '\\&',
                    '\\|',
                    '\\!',
                    '\\(',
                    '\\)',
                    '\\{',
                    '\\}',
                    '\\[',
                    '\\]',
                    '\\^',
                    '\\~',
                    '\\*',
                    '\\?',
                    '\\:',
                    '\\"',
                    '\\;',
                    '\\ '
                ];                    
                _.map(object, function (field) {
                    field.replaceArray(match, replace);
                });

到这个

field.replaceArray(match, replace);

但它不起作用可能是因为我不太了解Regex的工作原理:(

1 个答案:

答案 0 :(得分:2)

你需要逃避方括号。也将连字符放在最后,因为在第二位它表示一个范围:

field.replace(/([\\+&|!(){}\[\]^~*?:"; -])/g, '\\$1');

regex tester