Ваше понимание неверно. Группа по-прежнему будет частью основного захвата, но она не будет учитываться как захват подвыражения. Следующее будет возвращать массив из двух совпадений:
x = "abcdefg"
x = x.match(/ab(cd)ef/)
Индекс массива 0 будет «abcdef» (полное совпадение), а индекс массива 1 будет «cd», захват подвыражения. Добавление ?:
говорит регулярному выражению, что не нужно заботиться о захвате подвыражения, полное совпадение по-прежнему полностью фиксируется.
Из других ваших комментариев есть несколько способов сделать то, что вы пытаетесь сделать. Например:
x.replace(/(ab)cd(ef)/, "$1$2");
x.slice(0, x.indexOf("cd")) + x.slice(x.indexOf("cd") + 2);