Javascript Hubot不响应regex变量

Javascript Hubot不响应regex变量,javascript,regex,coffeescript,hubot,Javascript,Regex,Coffeescript,Hubot,我已经和Hubot玩了一段时间了,实际上时间太长了,但我一直在匹配数组中的字符串回复是包含一些回复的数组 所以这是可行的: module.exports = (robot) -> robot.hear /seb/i, (msg) -> msg.send msg.random replies 然而,这并不是: regex = new RegExp triggers.join(), 'gi' module.exports = (robot) -> rob

我已经和Hubot玩了一段时间了,实际上时间太长了,但我一直在匹配数组中的字符串<代码>回复是包含一些回复的数组

所以这是可行的:

module.exports = (robot) ->
    robot.hear /seb/i, (msg) ->
    msg.send msg.random replies
然而,这并不是:

regex = new RegExp triggers.join(), 'gi'

module.exports = (robot) ->
    robot.hear regex, (msg) ->
    msg.send msg.random replies
regex
是由字符串数组的内容组成的字符串。在这种情况下,打印regex返回
“/seb/i”

有人想解释一下吗?我从来都不是JavaScript和Coffeescript的超级粉丝:)

使用字符串参数作为分隔符。当没有给出参数时,它默认为

假设我们有以下关键字数组:

const triggers = ["kw1", "kw2", "kw3"]
调用
triggers.join()
将返回字符串
kw1、kw2、kw3
。将其传递给RegExp构造函数将创建一个RegExp对象

为了用正则表达式匹配多个关键字,必须用分隔符分隔它们

所以不是

regex = new RegExp triggers.join(), 'gi'
你应该写

regex = new RegExp triggers.join('|'), 'i'

您可能还想删除
g
(全局搜索)标志,因为它足以匹配您案例中第一次出现的关键字。

它不应该是
触发器。join(“|”)
?显然是这样。这只是一条规则吗?为什么不能用逗号代替正则表达式呢?请@fardjad将其添加到适当的答案中,并对我的问题进行可能的解释,我将其标记为答案。