Разве второй не сделает это?
^[A-Z]{2,}
Что в основном говорит "строка начинается с 2 или более заглавных букв"
Вот несколько тестов с предоставленными вами строками, которые должны соответствовать:
>>> 'ABC'.match(/^[A-Z]{2,}/);
["ABC"]
>>> 'ABc'.match(/^[A-Z]{2,}/);
["AB"]
>>> 'ABC ABC'.match(/^[A-Z]{2,}/);
["ABC"]
>>> 'ABc Abc'.match(/^[A-Z]{2,}/);
["AB"]
А потом те, которым он не должен соответствовать:
>>> 'Abc'.match(/^[A-Z]{2,}/);
null
>>> 'AbC'.match(/^[A-Z]{2,}/);
null
>>> 'Abc Abc'.match(/^[A-Z]{2,}/);
null
>>> 'Abc ABc'.match(/^[A-Z]{2,}/);
null
Если вы хотите сопоставить только первые два, вы можете просто сделать {2}