2009-07-26 10 views

risposta

139

espressioni regolari:

var numberPattern = /\d+/g; 

'something102asdfkj1948948'.match(numberPattern) 

Questa restituirebbe un oggetto con due elementi interni, '102' e '1.948.948'. Operare come desideri. Se non corrisponde a nessuno, restituirà null.

Supponendo che non si tratti di decimali complessi, ciò dovrebbe essere sufficiente.

+2

err. odio essere pignolo, ma questo restituisce un array, non un oggetto (almeno in chrome). – Maus

+8

Tuttavia, tutti gli array sono oggetti, no? –

+1

come su 'parseInt (stringa);' –

6

Immagino di voler ottenere il/i numero/i dalla stringa. In questo caso, è possibile utilizzare il seguente:

// Returns an array of numbers located in the string 
function get_numbers(input) { 
    return input.match(/[0-9]+/g); 
} 

var first_test = get_numbers('something102'); 
var second_test = get_numbers('something102or12'); 
var third_test = get_numbers('no numbers here!'); 

alert(first_test); // [102] 
alert(second_test); // [102,12] 
alert(third_test); // null 
+0

Giusto per chiarire, 'get_numbers/1' restituisce una matrice di stringa, non numero. Per il vostro esempio, sarebbe tornato: * '[ "102"]' * '[ "102", "12"]' * nullo – sntran

137

si potrebbe anche togliere tutti i caratteri non numerici (\D o [^0-9]):

'abc123cdef4567hij89'.replace(/\D/g, ''); 
// returns '123456789' 
2

Le risposte date in realtà non corrispondono alla tua domanda , che implicava un numero finale. Inoltre, ricorda che stai recuperando una stringa; se effettivamente bisogno un numero, il cast del risultato:

item=item.replace('^.*\D(\d*)$', '$1'); 
if (!/^\d+$/.test(item)) throw 'parse error: number not found'; 
item=Number(item); 

Se hai a che fare con ID elemento numerico su una pagina web, il codice potrebbe anche accettare un utilmente Element, estrarre il numero dalla sua id (o il suo primo genitore con un id); se hai un Event a portata di mano, probabilmente puoi anche ottenere lo Element.

2
var result = input.match(/\d+/g).join([]) 
6

se desideri solo cifre:

var value = '675-805-714'; 
var numberPattern = /\d+/g; 
value = value.match(numberPattern).join([]); 
alert(value); 
//Show: 675805714 

ora si ottiene le cifre unite

9

Per numero con frazione decimale e segno meno, io uso questo frammento:

var NUMERIC_REGEXP = /[-]{0,1}[\d]*[\.]{0,1}[\d]+/g; 

'2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP) 
// return ["2.2", "3.1", "4", "-7.6"] 

Aggiornamento:

Ho trovato uno strumento che consente di modificare visivamente le espressioni regolari: JavaScript Regular Expression Parser & Visualizer.

Aggiornamento:

Ecco un altro con il quale si può anche debugger regexp: Online regex tester and debugger.

Aggiornamento:

Un altro: Regexpal.

+0

perfetta, unica soluzione che funziona con decimali e nums negativi – ArmaGeddON

+0

Grazie, @ ArmaGeddON, spero che possa aiutare più persone. –

+0

sembra che questo corrisponderà anche a cose come 0.0.0. Prova a spostare il. fuori dalla parentesi come questa [-] {0,1} [\ d] * [\.] {0,1} [\ d] + – Makolyte

Problemi correlati