Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取组的值并在JavaScript的一行中定义它?_Javascript_Regex - Fatal编程技术网

如何获取组的值并在JavaScript的一行中定义它?

如何获取组的值并在JavaScript的一行中定义它?,javascript,regex,Javascript,Regex,如何在JavaScript中定义正则表达式组并在一行中访问它 我尝试使用eval获取已定义正则表达式组的值: let str = ` global stuff = 1; global h = 0; function inc(arg) { inc = inc + 1; }; main { repeat(inc, 10); } `; str = str.replace(/repeat\((.*?|$1), (.*?|$2)\)/gm, "$1".repeat(eval("$2")))

如何在JavaScript中定义正则表达式组并在一行中访问它

我尝试使用eval获取已定义正则表达式组的值:

let str = `
global stuff = 1;
global h = 0;
function inc(arg) {
    inc = inc + 1;
};
main {
    repeat(inc, 10);
}
`;
str = str.replace(/repeat\((.*?|$1), (.*?|$2)\)/gm, "$1".repeat(eval("$2")));
console.log(str);
我希望输出是

`global h = 0;
function inc(arg) {
    h = h + 1;
};
main {
    inc;
    inc;
    inc;
    inc;
    inc;
    inc;
    inc;
    inc;
    inc;
    inc;
}`
,因为我想转换
repeat(inc,10)

inc;
inc;
inc;
...

,但它给了我这个错误:
ReferenceError:$2未定义
。我知道我在这里做的可能看起来很模糊,但这是我为编程语言编写的编译器代码的一部分。

替换方法可以使用函数。这段代码在一行中完成了您的要求

let str=`
全球材料=1;
全局h=0;
功能公司(arg){
inc=inc+1;
};
主要{
重复(inc,10);
}
`;
str=str.replace(/(\s+)repeat\(.*?$1),(.*?$2)\)/gm,(match,p0,p1,p2)=>(p0+p1+“;”)。repeat(p2));

console.log(str)为什么全部在一行中?