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

标签 javascript regex

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

a cat bit a dog on the butt before running away

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

a cat bit a dog on the butt b

在上面的例子中,句子有 5 个 a 和 3 个 b。我想要达到 3 个 a 和 3 个 b 的程度。

谢谢你的帮助。

最佳答案

这不可能。

an bn 不是 regular , 因此在数学上不可能与正则表达式匹配,即使使用增强的正则表达式也是如此。

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

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];
}

关于javascript - 正则表达式 - 匹配直到有相同数量的 2 个特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47644164/

相关文章:

javascript - 使用 javascript 如何计算 DIV 可见的时间,然后将该时间长度记录到本地数据库

java - 加载页面后如何在 JavaFx.WebView 中运行 javascript 代码?

javascript - 用正则表达式匹配和替换,但只替换正则表达式找到的某些部分

javascript - 使用正则表达式检索字符串的特定部分

php正则表达式至少匹配3个字符?

javascript - 使用开始月份和结束月份的时刻获取一系列月份

javascript - 如何在node.js中引入插件模块?

javascript - Chrome 的 AngularJS 和 Symfony 3 CORS 问题

python - 我怎样才能用正则表达式标记这个?

java - 使用正则表达式从字符串中获取数字