web-dev-qa-db-fra.com

Expression régulière [n'importe quel nombre]

J'ai besoin de tester "[n'importe quel nombre]" dans une chaîne en javascript. comment pourrais-je lui correspondre?

Oh, "[" et "]" doivent également être appariés. 

donc une chaîne comme "[1]" ou "[12345]" est une correspondance.

Non concordance: "[23432" ou "1]" 

Donc par exemple:

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

Je dois remplacer le nom des champs de saisie: "items [0] .firstname" par "items [1] .firstname" Merci.

25
ShaneKm

UPDATE: pour votre question mise à jour

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

Essaye ça:

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

J'espère que cela t'aides!

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

Vous pouvez utiliser la fonction suivante pour trouver le plus gros [number] dans une chaîne.

Il renvoie la valeur du plus gros [number] sous forme d'entier.

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 démo suivante calcule le plus grand nombre dans votre zone de texte chaque fois que vous cliquez sur le bouton.

Il vous permet de jouer avec la zone de texte et de tester à nouveau la fonction avec un texte différent.

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>

Voir aussi this Fiddle !

0
John Slegers