【发布时间】:2020-10-02 17:22:28
【问题描述】:
我有一个这样的文本文件:
// start file
var nameVar1 = '';
// var nameVar1 = '';
var otherVar1= "test1";
var nameVar2 ="test2",
otherVar2 = 'test3';
var nameVar3 = true;
var otherVar3 = false ;
var objName = {
test: 'test'
};
var expression = nameVar1 + nameVar2;
// comment
for(var test in templateConfig) {
if( templateConfig ){ defaultLang = langParam; }
}
// end file
我正在尝试查找所有具有字段的变量并将它们替换为插值并获取以下示例:
// start file
{{nameVar1}}
// var nameVar1 = '';
{{otherVar1}}
{{nameVar2}}
{{otherVar2}}
{{nameVar3}}
{{otherVar3}}
{{objName}}
var expression = nameVar1 + nameVar2;
// comment
for(var test in templateConfig) {
if( templateConfig ){ defaultLang = langParam; }
}
// end file
我得到了一个正则表达式,但它不能很好地工作,因为它还在循环或表达式中找到变量
const regex = /(?<!\/\/\s*?)(?:var|let|const)(?:\s+)(.*?)(?:\s+)?=\s?(?:.*?);/gms;
const subst = `{{$1}}`;
const result = str.replace(regex, subst);
【问题讨论】:
-
您为什么要这样做?在编程代码上使用正则表达式?您应该至少使用解析器。并替换文件中的文本?我怀疑你有an XY problem。
-
模板化 javascript 似乎是一个必然有大量错误的想法。
-
@Taplar 曾使用过模板化代码文件(但不是 JS),我可以说它也非常笨拙,可能会给您带来全新的问题,因为你生成的所有代码都会做同样的事情,所以像向模板类添加属性这样的事情会将其添加到所有其他生成的代码中,无论你是否愿意。
-
没有编程知识的普通人可以使用的各种配置文件,html和javascript混合内容的文件。这个想法是制作一个可以独立于代码编辑字段的编辑器......
-
听起来您只需要允许人们编辑配置,然后您需要让 您的代码 使用该配置进行操作。不生成代码基于配置。
标签: javascript regex typescript variables text