Я не смог воспроизвести проблему, потому что я не уверен, каково значение chunk
.
В любом случае, это еще один пример ненужного использования eval
, вы можете использоватьКонструктор RegExp
для построения объекта RegExp
из строки, например:
var re = /foo/gi;
Эквивалентно созданию объекта во время выполнения с помощью конструктора RegExp
:
var re = new RegExp('foo', 'gi');
Применяя его к вашему коду:
var chunk = String(arr[i]); // use String() only if you are not sure if arr[i] is
// Be aware that the following line is replacing only the first $
// char and you may want to scape other meta-characters:
chunk = chunk.replace('$', '\\$');
var a = message.match(new RegExp(chunk,'gi'));
if(a instanceof Array) symbol = symbol.concat(a);