我现在正在使用Node-RED函数节点中的一些javascript,并且正则表达式比较遇到问题。

var incoming = /^(?=.*?\bhello?\b)(?=.*?\bworld\b).*$/;
//var incoming = msg.payload[0].expression;
var sentence = "say hello to the world";
msg.payload = incoming.test(sentence);
return msg;


效果很好,msg.payload现在的值为“ true”

当我尝试从其他地方获取“传入”变量而不是对其进行定义时,它失败了。

//var incoming = /^(?=.*?\bhello?\b)(?=.*?\bworld\b).*$/;
var incoming = msg.payload[0].expression;
var sentence = "say hello to the world";
msg.payload = incoming.test(sentence);
return msg;


当以这种方式设置变量“ incoming”时,它不起作用,并抱怨“ TypeError:incoming.test不是函数”。获取typeof(incoming)将返回“字符串”,而不是以前的“对象”。 msg.payload [0] .expression包含与在函数内部设置的字符串相同的字符串,但它具有不同的数据类型。处理此问题的最佳方法是什么?

谢谢!

最佳答案

//var incoming = /^(?=.*?\bhello?\b)(?=.*?\bworld\b).*$/;
var incoming = RegExp(msg.payload[0].expression);
var sentence = "say hello to the world";
msg.payload = incoming.test(sentence);
return msg;


可以正常工作,谢谢Garr!

10-02 18:35