我正在研究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;
设置变量"传入"这种方式不起作用并且抱怨" TypeError:incoming.test不是函数"。获取typeof(传入)返回" String"而不是"对象"就像以前一样。 msg.payload [0] .expression包含与在函数内部设置相同的字符串,它只是具有不同的数据类型。处理这个问题的最佳方法是什么?
谢谢!
答案 0 :(得分:1)
//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!