este patrón funciona, pero no hace trim
Cita: str.replace(/\B\W\b/g, '');
este otro, no funciona
Cita: str.replace(/s*([.,?:])s*/g, '$1');
este otro, funciona y hace trim
Cita: str.replace(/\s*([.,?:])\s*/g, '$1');
fíjate en la sutil diferencia. lee la documentación que te dejé y lo entendarás