В настоящее время я пытаюсь создать небольшой механизм шаблонов в Javascript, заменив теги в теге html5 на поиск и замену регулярным выражением.Javascript exec maintaing state
Я использую exec на своем регулярном выражении, и я перебираю результаты. Мне интересно, почему регулярные выражения ломаются в своей текущей форме с флагом/g в регулярном выражении, но отлично ли это?
Проверьте сломанный пример и удалите флаг/g в регулярном выражении, чтобы просмотреть правильный вывод.
var TemplateEngine = function(tpl, data) {
var re = /(?:<|<)%(.*?)(?:%>|>)/g, match;
while(match = re.exec(tpl)) {
tpl = tpl.replace(match[0], data[match[1]])
}
return tpl;
}
https://jsfiddle.net/stephanv/u5d9en7n/
Может кто-нибудь объяснить мне немного больше глубины, почему мой пример ломается именно на:
<p><%more%></p>