查找一个字符串在另一个字符串中的所有位置

时间:2019-05-23 18:45:46

标签: javascript regex match

我找不到以下问题的解决方案,这让我发疯了。我需要找到一个字符串在另一个字符串中的每个位置。

这是我想出的:

function getMatchIndices(regex, str) {
    let result = [];
    let match;
    let regex = new RegExp(regex, 'g');
    while (match = regex.exec(str))
        result.push(match.index);
    return result;
}


const line = "aabaabbaababaababaaabaabaaabaabbabaababa";
const rule = 'aba';

const indices = getMatchIndices(new RegExp(rule, "g"), line);

console.log(indices);

现在,问题是,这与其他两个匹配项中间形成的aba匹配...

以下是说明问题的图片:

Image

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我意识到这不是Regex解决方案。因此,可能不是您所需要的。

希望有帮助。

function getMatchIndices(r, str) {
  const indices = [];
  str.split('').forEach((v,i) => {
    if(r === str.substring(i,i+r.length)) {
      indices.push(i);
    }
  });
  return indices;
}

const line = "aabaabbaababaababaaabaabaaabaabbabaababa";
const rule = 'aba';

const indices = getMatchIndices(rule, line);

console.log(indices);