javascript - 如何使用匹配和正则表达式返回变量的内容?

标签 javascript node.js regex telegram telegraf

我希望能够使用正则表达式返回这些变量的内容。

'use strict'

const Telegraf = require('telegraf')
const fs = require('fs')

var ar1 = fs.readFileSync('folder/ar1.txt').toString()
var ar2 = fs.readFileSync('folder/ar2.txt').toString()
var ar3 = fs.readFileSync('folder/ar3.txt').toString()

我尝试使用:

app.hears(/\bar\d/i, (ctx) => {
    ctx.reply(ctx.match[0])
    //Returns: "ar1"
})

但这仅返回字符串,而不返回变量的内容。

最佳答案

可以在这里使用eval,但我不建议这样做。相反,我建议您映射变量。

const files = {
    "ar1" : fs.readFileSync('folder/ar1.txt').toString(),
    "ar2" : fs.readFileSync('folder/ar2.txt').toString(),
    "ar3" : fs.readFileSync('folder/ar3.txt').toString()
};

然后,您可以使用找到的字符串来回复您的对象键(这里也可以使用 Map)

app.hears(/\b(a+)r\d/i, (ctx) => {
    ctx.reply(files[ctx.match[0]]);
    //now returns the file
});

关于javascript - 如何使用匹配和正则表达式返回变量的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272424/

相关文章:

javascript - 具有字符重复的字符串

javascript - 跨 server.js 和 api 的 Socket.io 调用

node.js - 当调用post方法时,当密码对应时,它会进入if语句,但我的if语句中的res被忽略,为什么?

node.js - Node.js 中的默认 SIGINT?

python正则表达式: how to remove all punctuation characters from a string but keep those between numbers?

c# - 统计正则表达式在字符串中匹配的次数

javascript - 如何使用 Javascript 检测移动浏览器(Android Chrome)的关闭?

javascript - 如何在 IE 6 中仅在某一特定 DIV 上启用悬停功能?

javascript - 在 Javascript 中显示分钟

regex - Perl 同时替换多个字符串