我如何使用JSON键作为正则表达式
How can I use JSON keys as regex?
我想有以下JSON对象:
let emotes = {
/:-?')/: 'smiley.png',
/:-?'(/: 'sady.png',
/:-?o/i: 'surprisey.png'
}
我想用文本中的值替换键,如下所示:
Object.keys(emotes).forEach(function(emote) {
content = content.replace(emote, '<img src="smileys/' + emotes[emote] + '">')
})
这是不工作。正确的做法是什么?
我个人会使用数组。这允许您使用正则表达式常量,避免从字符串构造正则表达式实例,并且还可以保证应用程序顺序:
let emotes = [
[ /:-?')/, 'smiley.png' ],
[ /:-?'(/, 'sady.png' ],
[ /:-?o/i, 'surprisey.png' ]
];
:
emotes.forEach(function(pair) {
content = content.replace(pair[0], '<img src="smileys/' + pair[1] + '">');
});
如果您不想要数字索引的丑陋(在我看来是轻微的,但每个人都有自己的),您可以使用对象数组:
let emotes = [
{ pattern: /:-?')/, src: 'smiley.png' },
{ pattern: /:-?'(/, src: 'sady.png' },
{ pattern: /:-?o/i, src: 'surprisey.png' }
];
要清楚,这不是一个JSON对象。它甚至不是合法的JavaScript对象字面量。JS对象的关键字是字符串,而不是正则表达式。你所做的在Firefox AFAICT中是不合法的,可能在其他浏览器中也是。检查你的浏览器日志,它很可能完全拒绝你对emotes
的定义。
如果你想要处理一堆对,创建一个对数组并使用它:
let emotes = [
[/:-?')/, 'smiley.png'],
[/:-?'(/, 'sady.png'],
[/:-?o/i, 'surprisey.png'],
]
emotes.forEach(function(emotereplacement) {
var [emote, replacement] = emotereplacement;
content = content.replace(emote, '<img src="smileys/' + replacement + '">');
});
您可以将"keys"转换为字符串,这将使其成为有效的JSON对象。同样,语法是Object。
查看下面的工作片段。
let emotes = {
":-?)" : 'smiley.png',
":-?(": 'sady.png',
":-?o": 'surprisey.png'
}
var content = " :-?) :-?( :-?o";
Object.keys(emotes).forEach(function(emote) {
content = content.replace(emote, '<img src="smileys/' + emotes[emote] + '">')
})
console.log(content);
相关文章:
- 将电子邮件验证正则表达式字符串存储在JSON中
- 如何使用 JSON 解析正则表达式文本
- 在JSON中指定正则表达式字符串,在JavaScript和PHP中使用
- 使用正则表达式循环 Json 数据
- JavaScript 使用基于 json 数组的正则表达式替换字符串
- 如何在从 javascript 中的 json 对象中提取字符串时保留转义序列.(字符串实际上是正则表达式模式)
- 如何创建正则表达式 查找 JS 文件(或 JSON)中的所有字符串
- 用于修复无效 JSON 的正则表达式
- 如何在 javascript 中使用正则表达式检查空的 json 响应
- 使用正则表达式转换 JSON 密钥值
- 如何使用正则表达式和“”字符正确解析 JSON
- 如何使这个json正则表达式贪婪
- JSON中的正则表达式模式
- javascript通过使用正则表达式匹配键从JSON对象检索值
- 使用正则表达式从JSON中删除具有给定属性的对象
- 如何从json使用正则表达式(regex)在php中的内容
- 使用正则表达式匹配JSON
- 我如何使用JSON键作为正则表达式
- 检查JSON LIKE字符串是否有效- JS正则表达式
- 是否有一种方法让我搜索JSON数组向后使用正则表达式