BBo*_*Bog 3 javascript regex replace
我正在尝试从给定的字符串中提取变量名称,并将其替换为其他字符串.
例如,给定此字符串:
var test1 = 1; var test2 = 2; var test-test = 1 var test_3 = 3;
我需要提取test1,test2,test-test和*test_3*并用其他东西替换它们.
我尝试的是以下模式:
var ([a-zA-Z0-9_-]{1,})
我自己想出了它,从我所知道的关于正则表达式的小东西,据我所知,它应该匹配(贪婪)一个以var字母开头的字符串,包含字母,小写和大写,以及字符-和_.
但是,当我使用替换运行它时,匹配var name并不仅仅是name.
testString.replace(/var ([a-zA-Z0-9_-]{1,})/g, function (match) {
return match;
});
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到一个小提琴:http://jsfiddle.net/HyBZy/
这本身并不是一件大事,因为我可以简单地var从比赛中删除部分,但我想知道为什么会发生这种情况,我该如何解决这个问题.我明白,介于两者之间的部分()通常是在正则表达式中匹配的部分,而其他部分则是模式的一部分.
我将非常感谢一个很好的解释,我真的想了解更多关于正则表达式的知识
如果查看替换文档,可以添加更多参数以实现所需.
函数的第一个参数'match'是整个匹配的字符串.跟随正则表达式中的捕获组一样多的附加参数(在您的情况下为1).
所以你可以改用:
testString.replace(/var ([a-zA-Z0-9_-]{1,})/g, function (match, captureOne) {
return captureOne;
});
Run Code Online (Sandbox Code Playgroud)