Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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 如何用长度为匹配项的$string替换正则表达式匹配项_Javascript_Regex - Fatal编程技术网

Javascript 如何用长度为匹配项的$string替换正则表达式匹配项

Javascript 如何用长度为匹配项的$string替换正则表达式匹配项,javascript,regex,Javascript,Regex,我有一根绳子 test =" abc" 我需要用$sign替换“=””和“abc”之间的每个空格。所以这里应该是 test ="$$$$abc" 我正试着这样做 str.replace(/(=")(\s+)/g,"$1" + "$2".replace(/\s/g, "$")) 我打算用1美元来提取字符串的一部分。然后我尝试将正则表达式的第二个匹配($2)转换为字符串。我以为“$2”将在扩展$2反向引用后为我提供字符串“”。然后,通过扩展字符串,我试图再次调用replace,试图将这些

我有一根绳子

test ="    abc"
我需要用$sign替换“=””和“abc”之间的每个空格。所以这里应该是

test ="$$$$abc"
我正试着这样做

str.replace(/(=")(\s+)/g,"$1" + "$2".replace(/\s/g, "$"))

我打算用1美元来提取字符串的一部分。然后我尝试将正则表达式的第二个匹配($2)转换为字符串。我以为“$2”将在扩展$2反向引用后为我提供字符串“”。然后,通过扩展字符串,我试图再次调用replace,试图将这些空格转换为$。在此之后,我将$1和替换的$2追加到get=“$$$$”。但我意识到$2不会扩展到“”。是否有某种方法可以操作反向引用字符串并使用该操作版本替换字符串的内容。

您可以使用函数
匹配
,然后加入结果

m = str.match(/(.*)(=")(\s+)(.*)/);
str = m[1]+m[2]+m[3].replace(/\s/g, "$")+m[4];

谢谢你的回答,Howard。无论如何,我找到了另一种方法。似乎你可以传递一个函数作为替换函数的第二个参数。当在字符串中找到匹配项时,将调用此函数,参数为匹配字符串、括号中的匹配项(如果有)、字符串中匹配项的偏移量以及整个字符串。T然后,匹配项将被此函数返回的字符串替换

str. replace(/(=")(\s+)/g, function(match,p1,p2,offset,str){return match.replace(/\s/g,"$")})