javascript - 如何将 indexOf 与字符串模式的多个实例一起使用?

标签 javascript

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

例如:

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

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

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

当只有一个匹配项时,我能够创建一个对象,但我不确定如何获得多个匹配项。

最佳答案

使用replace()方法

var stringUnderTest = "/accounts/{account}/project/{project}";

var result = [];
stringUnderTest.replace(/\{([^\}]*)\}/gi, function(match, p1, index) {
  result.push({
    start: index,
    end: index + p1.length + 1
  })
});

console.log(result);

关于javascript - 如何将 indexOf 与字符串模式的多个实例一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526625/

相关文章:

javascript - 如何在查询中保存和加载带有cookie的div结构

javascript - 使用 jQuery 更新表后 DataTables fnFilter 不起作用

javascript - 将 Javascript 变量抓取到 Python 中

javascript - $http promise 链以错误的顺序运行

javascript - 使用 Firebase 处理未定义的值

javascript - 检查具有索引的对象是否在数组中

javascript - 管理 threejs Geometry 的元数据

javascript: HTML5 音频播放器

javascript - 将成功添加到双 jquery/ajax post

javascript - 如果以编程方式设置初始值,Dojo InlineEditBox 将在单击时清除