HipChat Bot JS REGEX

Я совершенно бесполезен с Регулярными выражениями и мне нужна помощь с этим. В настоящее время я создаю бота HipChat для своей работы, который будет создавать билеты JIRA из HipChat. Боты HipChat имеют возможность отслеживать чат-комнату для ключевых слов... затем запустить JavaScript, если ключевое слово было использовано.

В моем случае я бы хотел, чтобы бот следил за -

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

куда * = текст тела выпуска JIRA неограниченной длины

так что для этого мне понадобится регулярное выражение для подключения, а также регулярное выражение для перемещения текста описания в переменную... кто-нибудь здесь сможет помочь??

Если я плохо объяснил себя, ниже приведен пример того, как работает "Карма" (addon.webhook). Спасибо!

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

2 ответа

Вы можете просто использовать это регулярное выражение:

^\/ask (.*)$

Захватит текст после /ask, Обратите внимание на обратную косую черту здесь. Поскольку вы используете Javascript, фактическое выражение используется с разделителями, например:

/^\/ask (.*)$/

Вот regex101 для игры: https://regex101.com/r/tZ0iB6/1

Это тихое простое регулярное выражение:

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 = '/ ask *****';

Другие вопросы по тегам