2009-10-26 11 views
33

Supongamos que tengo una cadena como "puede introducir un máximo de 500 opciones". Necesito extraer 500 de la cadena.¿Cómo encontrar un número en una cadena usando JavaScript?

El problema principal es que la cadena puede variar como "puede introducir un máximo de 12500 opciones". Entonces, ¿cómo obtener la parte entera?

+2

Debe hacer clic en la marca de verificación de la respuesta dada por Cletus. Fue más que suficiente. – Chance

Respuesta

79

Utilice un regular expression.

var r = /\d+/; 
var s = "you can enter maximum 500 choices"; 
alert (s.match(r)); 

La expresión \d+ significa "uno o más dígitos". Las expresiones regulares por defecto son greedy, lo que significa que obtendrán todo lo que puedan. Además, este:

var r = /\d+/; 

es equivalente a:

var r = new RegExp("\d+"); 

Véase el details for the RegExp object.

Lo anterior tomará el primer grupo de dígitos . Puede recorrer y encontrar todos los partidos también:

var r = /\d+/g; 
var s = "you can enter 333 maximum 500 choices"; 
var m; 
while ((m = r.exec(s)) != null) { 
    alert(m[0]); 
} 

La bandera (global) g es clave para este bucle para trabajar.

2

Me gusta @jesterjunk respuesta, sin embargo, un número no siempre es solo dígitos. Considere esos números: "123.5, 123,567.789, 12.233.234 + E12"

Así que acaba de actualizar la expresión regular:

var regex = /[\d|,|.|e|E|\+]+/g; 

var string = "you can enter maximum 5,123.6 choices"; 
var matches = string.match(regex); // creates array from matches 

document.write(matches); //5,123.6 
0
var str = "you can enter maximum 500 choices"; 
str.replace(/[^0-9]/g, ""); 
console.log(str); // "500" 
Cuestiones relacionadas