Объект Javascript против метода String и test ()

1

Я работаю над некоторым javascript в узле узла Node-RED прямо сейчас, и я столкнулся с проблемой с сравнением регулярных выражений.

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 не является функцией". Получение типа (входящего) возвращает "String" вместо "Object", как это было ранее. msg.payload [0].expression содержит ту же строку символов, что и установка внутри функции, у нее просто другой тип данных. Каков наилучший способ справиться с этим?

Спасибо!

  • 0
    msg.payload [0] .выражение - это строка?
  • 1
    возможно дублирование stackoverflow.com/questions/874709/…
Показать ещё 1 комментарий
Теги:
node-red

1 ответ

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;

Работает, как ожидалось, спасибо Гарру!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню