Regex:不;t在某些情况下有效
Regex: Doesn't works in some cases
我真的是regex
的新手,并且一直在练习
$(".app").each(function(){
var raw_string = $(this).html();
var changed_string = raw_string.replace(/^'{'{|'}'}$/g, "");
$(this).html(eval(changed_string));
});
我正在尝试查看.app
的HTML,并搜索以胡子{{
开始、以胡子}}
结束的任何内容。就像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}}
发生了什么事
Js投标演示
修复表达式(匹配字符串的开头/结尾)仍然无法解决问题;您将尝试评估整个字符串,包括"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);
});
问题是你的.replace(…)并没有捕捉到胡子之间的东西,它只是去除了胡子。因此,在第二种情况下,您将尝试评估字符串而不是有效表达式,即eval("2 and 2 are: 2+2");
修复方法是使用捕获组()
执行.exec或.match,并提取捕获的字符串进行eval。
$(".app").each(function(){
var raw_string = $(this).html();
var reg = new RegExp(/'{'{(.*)'}'}/);
var formula = reg.exec(raw_string); // captures orig string in formula[0], first match in formula[1]
$(this).html(eval(formula[1]));
});
相关文章:
- parseJSON在一种情况下有效,而在另一种情况中无效
- 在保持字符串同等有效的情况下对其进行视觉加扰
- 在不重新运行jquery验证的情况下检查表单是否有效
- regex有效,但在区分大小写的情况下失败
- 更改svg元素只在某些情况下有效
- 按钮(禁用=错误)条件;在某些情况下有效,而在其他情况下无效
- 在没有服务器根访问权限的情况下构建聊天脚本的有效方法是什么
- 在没有鼠标的情况下暂停 HTML 选框的最有效方法
- 在这种情况下,检测窗口加载的有效方法
- 在每秒 10 次调用限制的情况下一次发出 50 个 API 请求的有效方法是什么(烂番茄 API)
- 在不中断页面的情况下,使用数据有效地重复更新DOM
- 在没有标准键的情况下通过对象的Javascript数组进行筛选的最有效方法
- jQuery-只有在所有表单字段都有效的情况下才运行加载图形函数
- Phonegap:JS对Java方法的调用仅在1种情况下有效
- Regex:不;t在某些情况下有效
- JavaScript:onchange函数只在50%的情况下有效
- 错误处理程序在任何情况下都有效
- 为什么attr()有效而text()无效't在同样的情况下?jQuery
- 在仍然使用Model的情况下发布两种数据.在ASP中有效.NET Core 1.0
- 如何赚$q.在这种情况下都有效