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存储为第一个索引。