javascript - 如何搜索 {{.*}} 并替换为 json

标签 javascript jquery regex templates

我正在尝试创建自己的 javascript 简单模板函数 我想创建一个如下所示的 html 页面

<p>
{{HELLO_WORLD}}
<br />
{{MY_NAME_IS}}
</p>

然后用 javascript 替换 {{}} 中的任何内容 带有如下所示的 json var

{HELLO_WORLD: "Hello World!", MY_NAME_IS: "My name is"}

我对执行此操作的正确方法有点困惑。 重点是创建一个多语言网站,这样我就可以加载所需语言的 json。 谢谢。

最佳答案

JavaScript 支持基于正则表达式的查找和替换,并具有替换函数。所以你可以这样做:

myInputString.replace( /\{\{([^\}]*)\}\}/g, function( s, v ) { return myJSON[v] } );

解释一下:

replace 有 2 个参数。第一个是正则表达式对象。在本例中,我们使用 JavaScript 的 /expression/flags 语法构建一个内联。它查找 2 个左大括号(需要转义,因为它们在正则表达式中具有特殊含义),后跟任何不是右大括号的字符,然后是 2 个右大括号。 g 表示“全局”,因此它将匹配所有情况,而不仅仅是第一个情况。

当找到匹配项时,将调用该函数。第一个参数(我称之为 s)是完全匹配的字符串(如“{{abc}}”),第二个参数(我称之为 v)设置为括号中的第一位(如“abc”)。

在实际代码中,您应该添加错误检查(不存在的变量),并可能转换为小写/其他。

有关替换的完整详细信息位于:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

关于javascript - 如何搜索 {{.*}} 并替换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767833/

相关文章:

regex - 为除以/api 开头的所有路由运行 express 中间件?

python - 结束行未使用 re library python 正确解析

javascript - Vue在生产环境DEV模式下

javascript - 使用 jquery 单击按钮取消表单并重定向页面

javascript - Vue.js:如何在 .vue 模板文件内的 vue 方法中设置数据变量

javascript - 页面重新加载之前复选框未获得选中状态

javascript - 带有 jQ​​uery 分页的 HTML 表格

jquery - 查询/CSS : no success in to reveal a footer hidden behind a front-page

javascript - 合并两个对象而不覆盖

python - 正则表达式允许安全字符