Я нашел эту функцию здесь , которая позволяет использовать ES6-подобные шаблоны в ES5.
String.prototype.eval = function(data) {
return this.replace(/\${(.*?)}/g, function(_, code) {
var scoped = code.replace(/(["'\.\w\$]+)/g, function(match) {
return /["']/.test(match[0]) ? match : 'scope.' + match;
});
try {
return new Function('scope', 'return ' + scoped)(data);
} catch (e) { return ''; }
});
}
Она работает очень хорошо, за исключением случаев, когда имена атрибутоввключить. (точки) в них.Мои навыки регулярных выражений не на пустом месте, как я могу позволить ему работать с именами атрибутов, которые включают в себя (точки)?
т.е. "MY_ATTRIBUTE" работает, а "MY_ATTRIBUTE.A" - нет.