我想使用创建一个包含正则表达式作为键值的对象。我尝试使用以下语法:
var kv = {
/key/g : "value"
};
但是根据JavaScript lint的检测,它失败了:
SyntaxError: invalid property id
我该如何修复它?
更新
背景:我想这样做的原因是为了实现一个解决HTTP API结果中错误Unicode的变通方法。我知道这样做很狡猾,但由于我无法控制API服务器代码,我认为这是我所能做的最好的。
目前,我通过拥有一个键数组和一个值数组来实现映射:
function fixUnicode(text) {
var result = text;
var keys = [];
var values = [];
keys.push(/é/g); values.push("é");
keys.push(/è/g); values.push("è");
keys.push(/ê/g); values.push("ê");
keys.push(/ë/g); values.push("ë");
keys.push(/Ã /g); values.push("à");
keys.push(/ä/g); values.push("ä");
keys.push(/â/g); values.push("â");
keys.push(/ù/g); values.push("ù");
keys.push(/û/g); values.push("û");
keys.push(/ü/g); values.push("ü");
keys.push(/ô/g); values.push("ô");
keys.push(/ö/g); values.push("ö");
keys.push(/î/g); values.push("î");
keys.push(/ï/g); values.push("ï");
keys.push(/ç/g); values.push("ç");
for (var i = 0; i < keys.length; ++i) {
result = result.replace(keys[i], values[i]);
}
return result;
}
但是我想实现使用JavaScript对象将键映射为值:
function fixUnicode(text) {
var result = text;
var keys = {
/é/g : "é",
/è/g : "è"
// etc...
};
for (var key in keys) {
result = result.replace(key, keys[key]);
}
return result;
}
var kv = [{rx: 'key1', modifier: 'g', value:'value1'}, {rx: 'key2', flags: 'g', value:'value2'}]
,然后循环遍历数组并使用var rx = new RegExp(kv[0].rx, kv[0].modifier);
构建正则表达式呢? - Shef