Javascript 用于模板解析的正则表达式
我正在尝试编写一个模板引擎。我想把html编译成javascript函数。为了实现这一点,我应该成功地解析模板 假设我有这样一个没有任何表达式的模板:Javascript 用于模板解析的正则表达式,javascript,regex,Javascript,Regex,我正在尝试编写一个模板引擎。我想把html编译成javascript函数。为了实现这一点,我应该成功地解析模板 假设我有这样一个没有任何表达式的模板: 我想将其解析为[''] 对于表达式:${test},我应该解析它:[''''${test}','''] 当使用多个表达式时:${test}-${test2}${test3},我应该能够得到[''''.'${test}','-','${test2}',''.'${test3}','''. 目前,我有/(.*)(\${(.*)})(.*)/gm,但它
我想将其解析为['']
对于表达式:${test}
,我应该解析它:[''''${test}',''']
当使用多个表达式时:${test}-${test2}${test3}
,我应该能够得到[''''.'${test}','-','${test2}',''.'${test3}','''.
目前,我有/(.*)(\${(.*)})(.*)/gm
,但它没有按我所希望的那样工作。有人能帮我用正确的正则表达式吗?试试这个
var str='${test}-${test2}${test3}';
var result=str.split(/(\${.*?})/);
console.log(结果)
//[“”,“${test}”、“-”、“${test2}”、“”、“${test3}”、“”]
根据您的需求,您的模式可以有3种类型的组:
- HTML标记:文本包装在
- 模板文本:在
和${
}
- 其他:上述案例中未涵盖的任何文本
var regex=/(\]*\>)|(\${[^}]*})|([^${}])+)/g;
风险值数据=[
'',
“${test}”,
“${test}-${test2}”,
“${test}${test12}”,
“${test}这是一个测试${test12}”
]
var result=data.map(str=>str.match(regex));
log(result)
用正则表达式解析HTML字符串是个坏主意。您希望如何处理
?@Rajesh就我而言,这不会是个问题。我正在编译我的html并创建一个函数。比如说:${test3}
,它是输出(“”);输出(测试3);对我来说(“”)
。所以我只关心${*}
部分。如果你只关心${…}
,你可以尝试这样的方法:我还需要数组中的其他部分,你能帮我吗?请注意编辑器中的
。您可以将您的HTML/CSS/JS代码放在一起,使其成为读者可以测试的工作代码段。另外,请尝试解释您的尝试。你回答的是读者,而不仅仅是OP。