»» [^-_A-Za-z0-9] kommt dem nahe (ist auch systemabhängig) und der Bindestrich ist mit drin.
Das ist schon mal gefährlich. Du beginnst mit einer unvollständigen Range.
Maskiere das Minus-Zeichen, wenn du keine Range meinst, oder stelle es an den Schluss
[^A-Za-z0-9_-]
Müßte ich das ^ nicht maskieren, damit es mit dem - als (unvollständige) Range erkannt wird? Aber Du hast Recht, wenn man den Bindestrich ans Ende setzt, muß man sich darüber nicht den Kopf zerbrechen.