Javascript 提取特定字符出现之间的字符串

Javascript 提取特定字符出现之间的字符串,javascript,regex,string,find-occurrences,Javascript,Regex,String,Find Occurrences,我试图在较大字符串中的特定字符出现之间提取字符串 例如: 初始字符串为: var str = "http://www.google.com?hello?kitty?test"; 我希望能够将问号之间的所有子字符串存储为它们自己的变量,例如“hello”、“kitty”和“test” 如何使用JavaScript或正则表达式将特定字符的不同索引之间的子字符串作为目标?快速注意:该URL将无效。问号?表示查询字符串的开头,键/值对通常以key=value的形式提供,并用符号&分隔 也就是说,如果这

我试图在较大字符串中的特定字符出现之间提取字符串

例如:

初始字符串为:

var str = "http://www.google.com?hello?kitty?test";
我希望能够将问号之间的所有子字符串存储为它们自己的变量,例如
“hello”
“kitty”
“test”


如何使用JavaScript或正则表达式将特定字符的不同索引之间的子字符串作为目标?

快速注意:该URL将无效。问号
表示查询字符串的开头,键/值对通常以
key=value
的形式提供,并用符号
&
分隔

也就是说,如果这不是一个问题,那么为什么不在问号上拆分以获得一个值数组呢

var split_values = str.split('?');
//result: [ 'http://www.google.com', 'hello', 'kitty', 'test' ]

然后,您只需从数组中获取单个值,跳过第一个元素。

我相信这样就可以了:

var components = "http://www.google.com?hello?kitty?test".split("?");
components.slice(1-components.length) // Returns: [ "hello", "kitty", "test" ]

使用正则表达式

var reg=/\?([^\?]+)/g;
变量s=”http://www.google.com?hello?kitty?test";
var结果=空;
而(结果=注册执行官){
console.log(结果[1]);

}
一般情况下使用RegExp:

var regex1 = new RegExp(/\?.*?(?=\?|$)/,'g'); regex1.lastIndex=0;
str.match(regex1)
请注意,这也将使您在每个子句中获得前导的
(在Javascript中不查找后面的regexp)

或者,您可以使用sticky标志并在循环中运行它:

var regex1 = new RegExp(/.*?\?(.*?)(?=\?|$)/,'y'); regex1.lastIndex=0;
while(str.match(regex1)) {...}

可以从第一个问号开始取子字符串,然后按问号拆分

const str=”http://www.google.com?hello?kitty?test";
const matches=str.substring(str.indexOf('?')+1.split(/\?/g);
console.log(匹配项)
您可以打开
并使用passing 1作为参数值

这将为您提供一个包含值的数组。例如,如果要创建单独的变量,可以通过其索引
var1=parts[0]

var str=”http://www.google.com?hello?kitty?test";
var parts=str.split(“?”).slice(1);
控制台日志(部件);
var var1=零件[0],
var2=零件[1],
var3=零件[2];
console.log(var1);
console.log(var2);

console.log(var3)
您知道这不是有效的查询字符串吗?也许您会发现这很有用:如果提取了
“test”
,为什么不提取
http://www.google.com“
?它不是用来作为有效的查询字符串的,我只是在测试从URL抓取信息并进行处理。谢谢!这个解决方案最适合我,因为它是最直接、最容易理解的代码片段。我最终只是在数组中调用不同的索引,而不是将它们存储在单独的变量中。我还喜欢它不将URL存储为第一个索引,如果字符串中没有?,它也不会索引任何内容。谢谢。该解决方案效果很好,但是如果URL末尾添加了“否”和其他术语,它会将URL存储在数组中。这一解决方案效果很好,但它也将URL存储为数组中的第一个索引。感谢regex解决方案!这正是我所期待的,与JS解决方案相比,这超出了我的理解范围。谢谢你的解决方案!它工作得很好,而且做得很好,我选择了另一个答案,因为它没有将URL存储为第一个索引。