0

我对正则表达式完全没用,需要帮助。我目前正在为我的工作创建一个 HipChat 机器人,它将从 HipChat 创建 JIRA 票证。HipChat 机器人能够监控聊天室中的关键字。如果使用了关键字,则运行 JavaScript。

就我而言,我希望 Bot 监控 -

"/ask ********************************"

其中*= JIRA 问题正文的文本,长度不限

所以为此,我需要正则表达式来连接,还需要正则表达式将描述文本移动到变量中。这里有人可以帮忙吗?

如果我没有很好地解释自己,下面是“Karma”如何工作的示例(addon.webhook)。谢谢!

https://bitbucket.org/atlassianlabs/ac-koa-hipchat-karma/src/cca57e089a2f630d924cd5df23211f0da3617063/web.js?at=master

4

2 回答 2

1

你可以简单地使用这个正则表达式:

^\/ask (.*)$

它会在/ask. 请注意此处的转义反斜杠。由于您使用的是 Javascript,因此实际表达式与分隔符一起使用,例如:

/^\/ask (.*)$/

这是一个可以使用的 regex101:https ://regex101.com/r/tZ0iB6/1

于 2015-02-17T19:38:23.627 回答
0

这是一个安静简单的正则表达式:

var matches = /^\/ask\s+(.*)$/i.exec(str);
if (matches && matches.length > 0) {
    var content = matches[1];
}

如果你想匹配多个不同的命令,你可以使用这样的东西:

var matches = /^\/([^\s]+)\s+(.*)$/g.exec(str);
if (matches && matches.length > 0) {
    var command = matches[1];
    var content = matches[2];
    switch(command.toLowerCase()) {
        case 'ask':
            // do something
            break;
        default:
            // command not found
            break;
    }
}

编辑:

  1. 修复了“a”变量
  2. 变量 str 必须是输入字符串。

    var str = '/问 *****';

于 2015-02-17T19:47:44.233 回答