Per il replace in fase di scrittura, devi usare una RE semplificata.

Io userei una cosa del genere:
codice:
<input ... onkeyup="this.value = this.value.replace(/[^\d\+ ]/), '');">
Se non vuoi permettere lo spazio:
/[^\d\+]/

Per la verifica finale puoi usare:
/\+?[\d ]+/

oppure:
/\+?\d+/