Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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_Jquery_Regex - Fatal编程技术网

Javascript 获取反向引用值并修改这些值

Javascript 获取反向引用值并修改这些值,javascript,jquery,regex,Javascript,Jquery,Regex,你能解释一下为什么我不能从匹配的正则表达式结果中获取反向引用的值,并在有效替换之前对其进行一些修改吗 预期结果是将例如字符串“.coord('X','Y')”替换为“X*Y”。但如果X>为某个值,则将该值除以2,然后使用该新值替换 下面是我当前正在测试的代码: 请参阅/*>>123232如果我理解正确,您将无法获得想要的结果,因为 'str'.replace( /(str)/, function(match,a){return '$1';} ) // "$1" 因此,您的初始数组不是按照您想要

你能解释一下为什么我不能从匹配的正则表达式结果中获取反向引用的值,并在有效替换之前对其进行一些修改吗

预期结果是将例如字符串
“.coord('X','Y')”
替换为
“X*Y”
。但如果
X
>为某个值,则将该值除以2,然后使用该新值替换

下面是我当前正在测试的代码:


请参阅
/*>>123232如果我理解正确,您将无法获得想要的结果,因为

'str'.replace( /(str)/, function(match,a){return '$1';} ) // "$1"
因此,您的初始数组不是按照您想要的方式构造的。
试试像这样的东西

var regexes = [
    [ /\.coord\(['"]([\w]+)['"],['"]?([\w:\.\\]+)['"]?\)/g, function(match, $1, $2){return $1 + ' * ' + $2;} ]
];
调用

return regexes[i][1](match, $1, $2, $3, $4);

你能在你的代码里解释一下吗?我想不出你想要什么。编辑了我的问题并更新了jsfiddle@roasted:通过修改
正则表达式[i][1]
,您可以在第一次之后使代码中断。另外,你的工作代码作为一个答案会更好——把它放在问题中会让人困惑。最后,我得到了它:regexes[i][1]=regexes[i][1]。替换('$1',$1)。替换('$2',$2);在匿名参数函数中,与您完全相同,但速度不如您的。这就是我错过的,大thx!关键是函数返回要替换的文本,而不是为反引用而解析的字符串。
var regexes = [
    [ /\.coord\(['"]([\w]+)['"],['"]?([\w:\.\\]+)['"]?\)/g, function(match, $1, $2){return $1 + ' * ' + $2;} ]
];
return regexes[i][1](match, $1, $2, $3, $4);
.replace(regexes[i][0], function(match, $1, $2) {
    if ($1 > 200) $1 = parseInt($1 / 2);
    if ($2 > 200) $2 = parseInt($2 / 2);
    return $1 + "*" + $2;
}));