如何从Botkit接收多个值的方法?

时间:2018-08-04 18:52:37

标签: javascript regex botkit

代码:

controller.hears([map (.*) (.*) into (.*)){
  var value = message.match[1];
        var source = message.match[2];
        var dest = message.match[3];   }

当输入为map 12 grams to kilograms时,它可以正常工作,但是当输入为map 12 square meter into square centimeter时,输出为 value = 12 square, source= meter and dest = square centimeter

如何修改代码,以使value字段仅接受数字,以便平方米转到源字段

1 个答案:

答案 0 :(得分:1)

您可以使用

map (\d+) (.*) into (.*)

请参见regex demo

第一个捕获组现在为(\d+),将仅捕获1个或多个数字。

您还可以使用\s+在值之间匹配1+个空格(因此,制表符和其他空格也将匹配,如果出现1次或多次):

map\s+(\d+)\s+(.*?)\s+into\s+(.*)

请参见this regex demo

详细信息

  • map-一个map子字符串
  • \s+-超过1个空格
  • (\d+)-第1组:一个或多个数字
  • \ s +
  • (.*?)-第2组:除换行符以外的任何0+个字符,并且尽可能少,
  • \s+-超过1个空格
  • into-into子字符串
  • \s+-超过1个空格
  • (.*)-组3:尽可能多的除换行符以外的0+个字符。