Я использую литералы javaScript RegEx для замены частей строки, я хочу использовать | для проверки возможных типов шаблонов и () для захвата части совпадения, которое я хочу заменить. но похоже, что это не работает, почему это?
вот мой текущий regEx:
testText.replace(/(\w)\s+\w$|(\w)\s+$|\w+(\w)$/g, "$1...")
Я предполагаю, что с этим что-то не так: вот хочу, чего я хочу добиться:
учитывая "x x", я ожидаю:
"x..."
учитывая "x", я ожидаю:
"x...
учитывая "werfdsdfasd" (слово без пробела), я ожидаю:
"werfdsdfasd..."



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема в том, что у вас есть 3 группы захвата, и вы всегда ссылаетесь на первую.
Попробуйте это: (\w+)(?:\s+\w$|\s+$|$)
Итак, вы хотите захватить все, что стоит перед пробелом или концом строки.
(\w+)(\s+.*$|$)
Вы должны зафиксировать то, что вам нужно сохранить. См. regex101.com/r/NdLkcQ/1. Попробуйте
.replace(/(\w)\s+\w$|(\w)\s+$|(\w+)\w$/g, '$1$2$3...'). Или regex101.com/r/NdLkcQ/2,replace(/(\w)\s+\w?$|(\w+)\w$/g, '$1$2...')