Javascript 如何对字符串模式的多个实例使用indexOf?

Javascript 如何对字符串模式的多个实例使用indexOf?,javascript,Javascript,如何使用String.prototype.indexOf()在给定字符串中查找一个或多个匹配的字符串模式 例如: 我有一个字符串要测试:/accounts/{account}/project/{project} 我想测试{…}的一个或多个字符串模式是否存在,其中..可以包含任何内容。在本例中,它们是:帐户,项目 我希望String.prototype.indexOf()检索一个对象,该对象具有匹配模式的每个实例的开始和结束索引集合。在这个例子中,我想要:[{start:10,end:18},{

如何使用String.prototype.indexOf()在给定字符串中查找一个或多个匹配的字符串模式

例如:

  • 我有一个字符串要测试:
    /accounts/{account}/project/{project}

  • 我想测试
    {…}
    的一个或多个字符串模式是否存在,其中
    ..
    可以包含任何内容。在本例中,它们是:
    帐户
    项目

  • 我希望
    String.prototype.indexOf()
    检索一个对象,该对象具有匹配模式的每个实例的开始和结束索引集合。在这个例子中,我想要:
    [{start:10,end:18},{start:28,end:36}]


我已经能够在只有一个匹配项的情况下生成一个对象,但我不确定如何获得多个匹配项。

indexOf
只返回字符串中第一次出现的模式(请参阅)。您可以使用自己的实现覆盖它,该实现只需多次调用indexOf并将结果存储在一个数组中,该数组作为最终结果返回,但这不是一个好主意,因为您将覆盖默认实现。更好的方法是创建一个新的原型函数(例如,String.prototype.indexOfMany)。

我会选择
String.prototype.match
。()

它返回与给定正则表达式匹配的所有子字符串

在您的示例中,您可以使用以下内容:

var stringUnderTest=“/accounts/{account}/project/{project}”;
var foundStrings=stringUnderTest.match(/\{[a-z]*\}/gi);
console.log(foundStrings)使用方法

var stringUnderTest=“/accounts/{account}/project/{project}”;
var结果=[];
替换(/\{([^\}]*)\}/gi,函数(匹配,p1,索引){
结果:推({
开始:索引,
结束:索引+p1。长度+1
})
});

控制台日志(结果)请张贴您迄今为止的尝试,请详细说明您的目标。如果您试图在服务器端解析URL(例如,使用Node.js),可能有内置程序可以为您解析URL(例如)。@IronFlare-事实上,route.parameters是我试图完成的。我试着自己做一些东西来使用客户端。我可能是把这件事复杂化了,而不是按照你的建议去做。我只是想看看我能不能自己解决。