我是 regex
的新手并且正在练习它。首先检查这段代码:
$(".app").each(function(){
var raw_string = $(this).html();
var changed_string = raw_string.replace(/^\{\{|\}\}$/g, "");
$(this).html(eval(changed_string));
});
我正在尝试查看 .app
的 HTML 并搜索以 mustache {{
开头并以 mustache }} 结尾的任何内容
。就像 Mustache.js
一样。首先,我将其替换为一个空字符串,然后将 .app
的 HTML 设置为 eval(changed_string)
。所以如果我尝试:
<div class="app">
{{2+2}}
</div>
工作绝对精细打印 4。但是:
问题
如果我向 .app
添加一些额外的 HTML:
<div class="app">
2 and 2 are: {{2+2}}
</div>
输出是:
2 and 2 are: {{2+2}}
发生了什么???
最佳答案
修复表达式(匹配字符串的开头/结尾)仍然不能解决问题;您将尝试评估整个字符串,包括“2 和 2 是:...”。
试试这个,替换每个 {{...}}
对中的内容:
$(".app").each(function(){
var raw_string = $(this).html();
var changed_string = raw_string.replace(/\{\{(.+)\}\}/g,
function( match, p1 ) {
return(eval(p1));
}
);
$(this).html(changed_string);
});
关于javascript - 正则表达式:在某些情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713387/