2011-02-08 47 views
21

Necesito probar para "[any number]" en una cadena en javascript. ¿Cómo lo igualaría?Expresión regular [Cualquier número]

Oh, "[" y "]" también deben coincidir.

por lo que las cadenas como "[1]" o "[12345]" coinciden.

no partido: "[23432" o "1]"

Así, por ejemplo:

$('.form .section .parent').find('input.text').each(function(index){ 
     $(this).attr("name", $(this).attr("name").replace("[current]", "['"+index+"']")); 
}); 

tengo que sustituir campos de entrada del nombre: "artículos [0] .firstname" a "artículos [1] .firstname" gracias

+0

http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric – mdrg

Respuesta

42

aCTUALIZACIÓN: de tu pregunta actualizado

variable.match(/\[[0-9]+\]/); 

Prueba esto:

variable.match(/[0-9]+/); // for unsigned integers 
variable.match(/[-0-9]+/); // for signed integers 
variable.match(/[-.0-9]+/); // for signed float numbers 

Espero que esto ayude!

+0

Intenté este $ (este) .attr ("nombre", $ (este) .attr ("nombre") .replace ("/ \\ [[0-9] + \\] /", "['" + index + "']")); pero no funciona. ¿Estoy haciendo algo mal? – ShaneKm

+1

no importa. funciona: var name = $ (this) .attr ("name"); var newname = $ (this) .attr ("name"). Replace (name.match (/ \\ [[0-9] + \\] /), "[" + index + "]"); – ShaneKm

+0

@aorcsik Salvavidas :) –

0
var mask = /^\d+$/; 
if (myString.exec(mask)){ 
    /* That's a number */ 
} 
2
if("123".search(/^\d+$/) >= 0){ 
    // its a number 
} 
0

Usted puede usar la siguiente función para encontrar el mayor [number] en cualquier cadena.

Devuelve el valor del mayor [number] como un Entero.

var biggestNumber = function(str) { 
    var pattern = /\[([0-9]+)\]/g, match, biggest = 0; 

    while ((match = pattern.exec(str)) !== null) { 
     if (match.index === pattern.lastIndex) { 
      pattern.lastIndex++; 
     } 
     match[1] = parseInt(match[1]); 
     if(biggest < match[1]) { 
      biggest = match[1]; 
     } 
    } 
    return biggest; 
} 

DEMO

La siguiente demostración calcula el número más grande de su área de texto cada vez que pulse el botón.

Le permite jugar con el área de texto y volver a probar la función con un texto diferente.

var biggestNumber = function(str) { 
 
    var pattern = /\[([0-9]+)\]/g, match, biggest = 0; 
 

 
    while ((match = pattern.exec(str)) !== null) { 
 
     if (match.index === pattern.lastIndex) { 
 
      pattern.lastIndex++; 
 
     } 
 
     match[1] = parseInt(match[1]); 
 
     if(biggest < match[1]) { 
 
      biggest = match[1]; 
 
     } 
 
    } 
 
    return biggest; 
 
} 
 

 
document.getElementById("myButton").addEventListener("click", function() { 
 
    alert(biggestNumber(document.getElementById("myTextArea").value)); 
 
});
<div> 
 
    <textarea rows="6" cols="50" id="myTextArea"> 
 
this is a test [1] also this [2] is a test 
 
and again [18] this is a test. 
 
items[14].items[29].firstname too is a test! 
 
items[4].firstname too is a test! 
 
    </textarea> 
 
</div> 
 

 
<div> 
 
    <button id="myButton">Try me</button> 
 
</div>

Ver también this Fiddle!

Cuestiones relacionadas