如何搜索{{。*}}并替换为json

时间:2013-07-20 23:59:53

标签: 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。 感谢的。

1 个答案:

答案 0 :(得分:2)

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

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

解释:

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

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

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

有关replace的完整详情,请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace