javascript - Coffeescript 正则表达式未按预期匹配

标签 javascript regex coffeescript hubot

我正在尝试编写一个 hubot 脚本来响应两种不同类型的输入。用户可以输入本地公共(public)交通站点的名称,也可以选择在后缀上加上延迟。

因此,第一个选项的输入可以是 dvb zellescher wegdvb albertplatzdvb zellescher weg in 5dvb albertplatz 在 10 第二个。 (这里的“dvb”是我脚本​​的关键字,“zellescher weg”和“albertplatz”是停止名称的两个示例)

在尝试将这些与正则表达式匹配时,我遇到了一个问题,我已经在不同的测试站点上工作的正则表达式(比如这里似乎推荐的 regex101 和 JS)在我的代码中不起作用.用于匹配没有数字的输入的正则表达式是 /^dvb (\D*)$/ 我正在使用 /dvb\s+(.*)in (\d*)/ 以匹配用户输入延迟的情况。

我的 hubot 的最小代码示例由于我不知道的原因不匹配如下所示:

robot.respond /^dvb (\D*)$/, (res) ->
    hst = res.match[1]
    res.send hst

感谢您对此的任何帮助。

最佳答案

据源respond code comments :

# Public: Adds a Listener that attempts to match incoming messages directed
# at the robot based on a Regex. All regexes treat patterns like they begin
# with a '^'

来自 respond 的正则表达式转到 respondPattern转义 ^ 并警告不要使用 anchor :

if re[0] and re[0][0] is '^'
      @logger.warning \
        "Anchors don't work well with respond, perhaps you want to use 'hear'"

因此,您需要删除 ^,或者使用 .hear不使用任何“智能”正则表达式预处理的方法:

hear: (regex, options, callback) ->
    @listeners.push new TextListener(@, regex, options, callback)

关于javascript - Coffeescript 正则表达式未按预期匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31670820/

相关文章:

javascript - SVG:在父变换上反向子旋转

javascript - 我可以使用输入类型 ="submit"以外的其他内容来发送表单吗?

php正则表达式过滤数据

python - 如何使用正则表达式抓取 json 值

jquery - 如何以编程方式构造对象数组

javascript - 如何防止 Shopify Polaris React 应用过早连接到 Shopify 服务?

javascript - 在 contenteditable 元素中,在 HTML 标记之间移动光标

r - 提取 bool 搜索字符串中的第一个值

javascript - coffeescript 中的 AMD 模块没有缩进整个文件?

coffeescript - Sublime Text 3更好的Coffee脚本包