JSFiddle - React, Tailwind, and code Playground

JavaScript

var string = "TGATGCCGTCCCCTCAACTTGAGTGCTCCTAATGCGTTGC",
    iterations = 100000;

var regex = new RegExp(/C(?:C(?:T(?:CT|TC)|CTT)|T(?:C(?:CT|TC)|TCC))|T(?:C(?:C(?:CT|TC)|TCC)|TCCC)/);

function c3t2(str) {
  for (index = 0; index + 5 < str.length; index++) {
    var substring = str.substring(index, index+5);
    
    var chars = substring.split("");
    if (chars.sort().join("") === "CCCTT") {
      return index;
    }
  }

  return false;
}

function c3t2_optimized(str) {
  var c = 0, t = 0;
  for (var i = 0; i < str.length; ++i) {
    var last = str.charAt(i);
    if (last == 'C') ++c;
    else if (last == 'T') ++t;
    if (i > 4) {
      var first = str.charAt(i - 5);
      if (first == 'C') --c;
      else if (first == 'T') --t;
    }
    if (c == 3 && t == 2) return i - 4;
  }
  return -1;
}


console.time('regex');
for (var i = 0; i < iterations; ++i) {
  var result = regex.exec(string);
}
console.timeEnd('regex');

console.time('c3t2');
for (var i = 0; i < iterations; ++i) {
  var result = c3t2(string);
}
console.timeEnd('c3t2');

console.time('c3t2_optimized');
for (var i = 0; i < iterations; ++i) {
  var result = c3t2_optimized(string);
}
console.timeEnd('c3t2_optimized');