select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[^[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ --------
11dd$%example@sqldat.com 11dde11h
[:alnum:] es una forma abreviada de todas las letras (letras ASCII estándar, mayúsculas y minúsculas) y todos los dígitos. [^ ... ] significa todo EXCEPTO ... . Entonces, esto reemplazará todo EXCEPTO letras y dígitos con... nada (ya que no le dimos un tercer argumento a REGEXP_REPLACE).
EDITAR :El OP agregó una segunda parte a la pregunta.
Si la tarea es eliminar SOLAMENTE todos los caracteres alfanuméricos y conservar todo lo demás, simplemente elimine el ^ de la expresión regular.
select '11dd$%example@sqldat.com' as input, regexp_replace('11dd$%example@sqldat.com', '[[:alnum:]]') as output
from dual
;
INPUT OUTPUT
------------ ------
11dd$%example@sqldat.com $%example@sqldat.com