gpt4 book ai didi

javascript - 如何使用 JavaScript 解析带有双大括号的字符串?

转载 作者:行者123 更新时间:2023-12-05 04:26:36 24 4
gpt4 key购买 nike

是否有快速的正则表达式方法或类似的方法可以将字符串解析为双花括号中的位(我们称它们为“静态”)和 在双花括号中(让我们称之为“动态”)?

例如输入:

Lorem {{ipsum dolor sit}} amet, {consectetur} adipiscing {{elit}}.

要求的输出:

[
{
type: "static",
value: "Lorem "
},
{
type: "dynamic",
value: "ipsum dolor sit"
},
{
type: "static",
value: " amet, {consectetur} adipiscing "
},
{
type: "dynamic",
value: "elit"
},
{
type: "static",
value: "."
},
]

到目前为止,我最好的尝试是使用 /\{*([^{}]+)\}*/g 作为正则表达式并使用 while 循环> 和 exec 但它错误地将 任何 个大括号识别为动态值,如下所示:

function templateParser(string) {
const re = /\{*([^{}]+)\}*/g;

const output = [];

while (true) {
const match = re.exec(string);

if (!match) {
break;
}

const [templateItem, templateKey] = match;

output.push({
type: templateItem === templateKey ? "static" : "dynamic",
value: templateItem === templateKey ? templateItem : templateKey
});
}

return output;
}

console.log(
templateParser(
"Lorem {{ipsum dolor sit}} amet, {consectetur} adipiscing {{elit}}."
)
);

最佳答案

区分{{ this }}that capture 的想法this匹配 that

{{(.*?)}}|.+?(?={{|$)

See this demo at regex101JS-demo at tio.run

使用 exec 您的值可以很容易地根据例如m[1]!=null(第一组匹配)。当然这与你的示例数据有关。假设没有嵌套并且没有猜测任何其他内容。

关于javascript - 如何使用 JavaScript 解析带有双大括号的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73026239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com