我试图通过使用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的工作原理:(
答案 0 :(得分:2)
你需要逃避方括号。也将连字符放在最后,因为在第二位它表示一个范围:
field.replace(/([\\+&|!(){}\[\]^~*?:"; -])/g, '\\$1');