代码:
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字段仅接受数字,以便平方米转到源字段
答案 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组:一个或多个数字(.*?)
-第2组:除换行符以外的任何0+个字符,并且尽可能少,\s+
-超过1个空格into
-into
子字符串\s+
-超过1个空格(.*)
-组3:尽可能多的除换行符以外的0+个字符。