2009-07-26 16 views

Respuesta

139

expresiones regulares:

var numberPattern = /\d+/g; 

'something102asdfkj1948948'.match(numberPattern) 

devolvería un objeto con dos elementos en el interior, '102' y '1948948'. Opere como lo desee. Si no coincide, devolverá nulo.

Suponiendo que no se trata de decimales complejos, esto debería ser suficiente, supongo.

+2

err. odio ser quisquilloso, pero esto devuelve una matriz, no un objeto (al menos en cromo). – Maus

+8

Todas las matrices son objetos, ¿no? –

+1

¿qué tal 'parseInt (cadena);' –

6

Supongo que quiere obtener el número (s) de la cadena. En cuyo caso, puede utilizar el siguiente:

// 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

Para dejarlo en claro, 'get_numbers/1' devuelve una matriz de cuerda, no número. Para su ejemplo, sería volver: * '[ "102"]' * '[ "102", "12"]' * nula – sntran

137

También podría despojar a todos los caracteres no numéricos (\D o [^0-9]):

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

Las respuestas dadas en realidad no coincida con su pregunta , lo que implicó un detrás del número. Además, recuerda que estás recuperando una cadena; si realmente necesita un número, emitir el resultado:

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

Si usted está tratando con los identificadores numéricos de elementos en una página web, su código podría también útilmente aceptar una Element, extrayendo el número de su id (o su primer padre con un id); Si tiene un Event a mano, también puede obtener el Element de eso también.

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

si desea que sólo dígitos:

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

ya que usted consigue los dígitos unieron

9

Por número con fracción decimal y el signo menos, yo uso este fragmento:

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"] 

Actualización:

Encontré una herramienta que le permite editar visualmente la expresión regular: JavaScript Regular Expression Parser & Visualizer.

Actualización:

Aquí hay otro con el que incluso se puede depurador expresión regular: Online regex tester and debugger.

Actualización:

Otra: Regexpal.

+0

perfecta, única solución que trabaja con decimales y nums negativos – ArmaGeddON

+0

, gracias, @ ArmaGeddon, espero que pueda ayudar a más personas. –

+0

parece que esto coincidirá con cosas como 0.0.0 también. Intenta mover el. fuera del paréntesis como este [-] {0,1} [\ d] * [\.] {0,1} [\ d] + – Makolyte

Cuestiones relacionadas