2011-02-08 4 views
21

Мне нужно проверить «[любое число]» в строке в javascript. как бы я совпадал?Регулярное выражение [Любое число]

О, "[" и "]" также необходимо согласовать.

так что строка типа "[1]" или "[12345]" соответствует.

Non матч: "[23432" или "1]"

Так, например:

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

Мне нужно заменить поля ввода имени: "пунктов [0] .firstname" до «пунктов [1] .firstname» благодаря

+0

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

ответ

42

UPDATE: для обновленного вопроса

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

Попробуйте это:

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

Надеется, что это помогает!

+0

Я пробовал этот $ (this) .attr ("name", $ (this) .attr ("name") .replace ("/ \\ [[0-9] + \\] /", "['" + index + "']")); но это не сработает. Я делаю что-то неправильно? – ShaneKm

+1

неважно. он работает: var name = $ (this) .attr ("name"); var newname = $ (this) .attr ("name"). Replace (name.match (/ \\ [[0-9] + \\] /), "[" + index + "]"); – ShaneKm

+0

@aorcsik Life saver :) –

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

Вы можете использовать следующую функцию, чтобы найти самый большой [number] в любой строке.

Он возвращает значение самого большого [number] как целое.

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

Следующие демонстрационный вычисляет наибольшее количество в вашем текстовом поле каждый раз при нажатии кнопки.

Это позволяет вам играть с текстовым полем и повторно проверять функцию с помощью другого текста.

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>

Смотрите также this Fiddle!

Смежные вопросы