Вы не можете повторять группы захвата, используя квантификатор, потому что буфер будет отслеживать только последнюю найденную группу. Но вот исправленная версия вашего регулярного выражения:
let formatRegex = /\(\s*\d+\s*,\s*\d+\s*\)(?:\s*,\s*\(\s*\d+\s*,\s*\d+\s*\))*/;
return formatRegex.test(rcvString);
Вот демонстрационная версия регулярного выражения, показывающая, что шаблон работает для вашего тестового ввода.
Демо
Шаблон регулярного выражения в основном просто соответствует одному кортежу в скобках, за которым следует ноль или более запятых и еще один кортеж. Вот объяснение логики регулярных выражений, используемой для первого кортежа (остальная часть шаблона в основном просто повторяет это):
\( match a (
\s* zero or more spaces
\d+ a number
\s* zero or more spaces
, a comma
\s* zero or more spaces
\d+ the second number
\s* zero or more spaces
\) match a (