Предположим, у вас есть
1) Имя, начинающееся с заглавной буквы, за которой следуют несколько маленьких букв -> [AZ] [az] *
2) Заглавная средняя буква-> [AZ]
3) Заглавная последняя буква, за которой следуют несколько маленьких букв -> [AZ] [az] *
U можно разбить их на 3 группы
(^[A-Z][a-z]*)([A-Z])([A-Z][a-z]*)
Так как вам нужна первая и последняя группы. Вы можете получить вот так -> $ 1 $ 3
Например.
'JohnJSmith'.replace(/(^[A-Z][a-z]*)([A-Z])([A-Z][a-z]*)/,'$1$3')->"JohnSmith"