gpt4 book ai didi

javascript - 提取变量名的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:15:35 29 4
gpt4 key购买 nike

我正在尝试从给定字符串中提取变量名并将其替换为其他内容。

例如,给定这个字符串:

var test1 = 1; var test2=2; var test-test=1 var test_3=3;

我需要提取 test1test2test-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;
});

你可以在这里看到一个 fiddle :http://jsfiddle.net/HyBZy/

这本身没什么大不了的,因为我可以简单地从匹配中删除 var 部分,但我想知道为什么会这样,我该如何解决这个问题。我知道 () 之间的部分是通常在正则表达式中匹配的部分,其他所有内容都是模式的一部分。

一个很好的解释将不胜感激,我真的很想了解更多关于正则表达式的知识

最佳答案

如果您查看 documentation for replace您可以添加更多参数来实现您想要的效果。

函数的第一个参数“match”是整个匹配的字符串。正则表达式中有多少捕获组(在您的情况下是一个)。

所以你可以改用:

testString.replace(/var ([a-zA-Z0-9_-]{1,})/g, function (match, captureOne) {
return captureOne;
});

这是 a fork of your fiddle

关于javascript - 提取变量名的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005998/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com