https://jsfiddle.net/an0efLLk/
Пример до жути простой, но он является частью шаблонизатора, который я пишу, поэтому я его упростил и запихнул в fiddle.
Так вот вопрос, почему
console.log(view.search(pattern));
выдает "-1"?
Если мы прямо пишем ..
view = view.replace('{: 5 + 5 :}', fn);
, то на странице появляется результат выражения - 10.
console.clear();
var view = document.querySelector('body').innerHTML;
var fn = '' + new Function('return 5 + 5')();
var exp = '5 + 5';
var pattern = new RegExp(
'{: ' + exp + ' :}', 'g'
);
console.log(pattern);
view = view.replace(pattern, fn);
console.log(view.search(pattern));