gpt4 book ai didi

javascript - 使用 RegExp 递归检索多个捕获组

转载 作者:行者123 更新时间:2023-12-03 12:12:43 24 4
gpt4 key购买 nike

我有一个具有以下格式的字符串:

#someID@tn@company@somethingNew@classing@somethingElse@With

可能有无限个@分隔的单词,但整个字符串肯定以#开头

我编写了以下正则表达式,虽然它匹配它,但我无法获取每个@分隔的单词,我得到的是最后一个递归和第一个递归(以及整个字符串)。如何分别获取元素中每个单词的数组?

(?:^\#\w*)(?:(\@\w*)+) //I know I have ruled out second capturing group with ?: , though doesn't make much difference.

这是我的 Javascript 代码:

var reg = /(?:^\#\w*)(?:(\@\w*)+)/g;

var x = null;


while(x = reg.exec("#someID@tn@company@somethingNew@classing@somethingElse@With"))
{
console.log(x);
}

这是结果(Firebug,控制台):

["#someID@tn@company@somet...sing@somethingElse@With", "@With"]


0
"#someID@tn@company@somet...sing@somethingElse@With"

1
"@With"

index
0

input
"#someID@tn@company@somet...sing@somethingElse@With"

编辑:如果可能的话,我想要一个带有正则表达式的输出:

["#someID", "@tn", @company", "@somethingNew", "@classing", "@somethingElse", "@With"]

请注意,我想要一个 RegExp 解决方案。我了解 String.split() 和字符串操作。

最佳答案

您可以使用:

var s = '#someID@tn@company@somethingNew@classing@somethingElse@With'
if (s.substr(0, 1) == "#")
tok = s.substr(1).split('@');
//=> ["someID", "tn", "company", "somethingNew", "classing", "somethingElse", "With"]

关于javascript - 使用 RegExp 递归检索多个捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24884641/

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