Javascript对象与字符串和test()方法

Javascript对象与字符串和test()方法,javascript,node-red,Javascript,Node Red,我现在正在一个节点RED函数节点中处理一些javascript,遇到了一个与regex比较的问题 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

我现在正在一个节点RED函数节点中处理一些javascript,遇到了一个与regex比较的问题

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(传入)返回“String”,而不是像以前一样返回“Object”。msg.payload[0]。表达式包含与在函数中设置它相同的字符串,它只是具有不同的数据类型。处理这个问题的最佳方法是什么

谢谢

//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

msg.payload[0]表达式是字符串吗?可能是dup Garr-您是对的,我在传入消息周围添加了RegExp(),现在它正在正确转换。非常感谢。