正则表达式 - 匹配直到有相等数量的 2 个特定字符

Ark*_*Ice 2 javascript regex

例如,如果我有以下句子:

一只猫在逃跑前咬了一只狗的屁股

如果我想使用的 2 个字符是“a”和“b”,那么我想匹配直到“a”和“b”数量相等,如下所示:

一只猫咬了一只狗的屁股 b

在上面的例子中,句子有 5 个 a 和 3 个 b。我想要很多,直到我有 3 个 a 和 3 个 b。

感谢您的帮助。

Der*_*會功夫 5

这是不可能的。

a n b n不是正则表达式,因此即使使用增强型正则表达式,在数学上也不可能与正则表达式匹配。

您可以使用以下函数来获取不使用正则表达式的范围:

var input = "a cat bit a dog on the butt b";
console.log(getRange(input, "a", "b"));

function getRange(input, char1, char2){
  var indexStart = -1;
  var count1 = 0, count2 = 0;
  
  for(var i = 0; i < input.length; i++){
    var char = input[i];
    switch(char){
      case char1:
        count1 += 1; break
      case char2:
        count2 += 1; break;
    }
    if(char == char1 || char == char2){
      if(indexStart == -1)
        indexStart = i;

      if(count1 == count2)
        return [indexStart, i];
    }
  }
  
  return [-1, -1];
}
Run Code Online (Sandbox Code Playgroud)