Javascript 用于模板解析的正则表达式

Javascript 用于模板解析的正则表达式,javascript,regex,Javascript,Regex,我正在尝试编写一个模板引擎。我想把html编译成javascript函数。为了实现这一点,我应该成功地解析模板 假设我有这样一个没有任何表达式的模板: 我想将其解析为[''] 对于表达式:${test},我应该解析它:[''''${test}','''] 当使用多个表达式时:${test}-${test2}${test3},我应该能够得到[''''.'${test}','-','${test2}',''.'${test3}','''. 目前,我有/(.*)(\${(.*)})(.*)/gm,但它

我正在尝试编写一个模板引擎。我想把html编译成javascript函数。为了实现这一点,我应该成功地解析模板

假设我有这样一个没有任何表达式的模板:
我想将其解析为
['']

对于表达式:
${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。