Your approach is best and you should stick to it.
As an educational-only alternative, you might use a solution based on a .replace method (because all matching methods will require joining multiple matches that you want to avoid, the reason being that you can't match disjoin (non-adjoining) pieces of text into a single group within one match operation):
s.replace(/[^]*?\b(\w)\w*\W+(\w)[^]*|[^]+/, '$1$2')
It matches the string up to the first word char that is captured into Group 1, matches up to the second word capturing its first word char into Group 2 and then matching all the string to the end, or - upon no match - [^]+ grabs the whole string, and replaces the whole string with Group 1 and 2 contents.
See the regex demo
KeChas a result?KC.replace. Something likes.replace(/[^]*?\b(\w)\w*\W+(\w)[^]*|[^]+/, '$1$2')