Removendo caracteres não numéricos de uma string com Javascript

Para remover caracteres não numéricos de uma String em Javascript, você só precisa de uma linha de código.

Veja:

'A1B2C3'.replace(/\D+/g, ''); // '123'

Explicando o código

Acima utilizamos a função String.replace. Esta função substitui o que é passado no primeiro argumento pelo segundo. O primeiro argumento aceita uma expressão regular. A expressão regular que utilizamos possui o valor \D+, que é a captura de qualquer valor não numérico. Substituimos tudo por uma string vazia.

Para facilitar as coisas, podemos criar uma função.

Código:

function somenteNumeros(string) {
    return string.replace(/\D+/g, '');
}
somenteNumeros('z3x2y1'); // '321'

Convertendo para inteiro

É importante lembrar que, apesar de estarmos deixando apenas os caracteres numéricos, o valor retornando continua sendo uma String. Mas, em Javascript, você pode converter esse valor para inteiro através da função parseInt.

var string = 'X13AB';
parseInt(string.replace(/\D+/g, '')); // 13

Input que aceita somente números

Hoje em dia não é muito usado, pois o HTML5 introduziu o input type number. Mas caso queria que seu input text remova apenas caracteres não numéricos quando digitados, você pode fazer assim:

document
.querySelector('#somente-numeros')
.addEventListener('input', function () {
    this.value = somenteNumeros(this.value)
})
<input type="text" id="somente-numeros">

Resultado:

<script> function somenteNumeros(string) { return string.replace(/\D+/g, ''); }

document.querySelector('#somente-numeros').addEventListener('input', function () { this.value = somenteNumeros(this.value) }) </script>