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

时间:2011-07-13 17:50:26

标签: javascript regex

我有一个字符串

test ="    abc"

我需要用$符号替换'=''和'abc'之间的每个空格。所以这里应该变成

test ="$$$$abc"

我正试图这样做。

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

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

2 个答案:

答案 0 :(得分:5)

感谢你的回答霍华德。无论如何,我找到了另一种方法。看来你可以传递一个函数作为替换函数的第二个参数。当在字符串中找到匹配字符串匹配的匹配项时,将调用此函数,如果匹配则匹配括号中的匹配项,匹配字符串中的匹配项和整个字符串。然后匹配将被从此函数返回的字符串替换

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

答案 1 :(得分:3)

您可以使用函数match并在之后加入结果。

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