Wenn du Umlaute und _alle_ Satzzeichen erhalten willst, geht das ganz schnell in die
Unicode-Zeichenklassen. Beispiel: [^\w\p{P}] sollte deinen Ansprüchen genügen, wenn die Engine die \p{}-Syntax unterstützt - ansonsten musst du an Stelle des \p{P} alle Satzzeichen auflisten.
http://www.regular-expressions.info/