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 le faire correspondre?

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

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

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

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].prénom" "éléments[1].prénom" merci

23
demandé sur Greg 2011-02-08 13:21:59

4 réponses

Mise à jour: pour votre question mise à jour

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

Essayez ceci:

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

Espérons que cela aide!

47
répondu aorcsik 2011-02-08 10:36:17
if("123".search(/^\d+$/) >= 0){
   // its a number
}
3
répondu morja 2011-02-08 10:28:30
var mask = /^\d+$/;
if ( myString.exec(mask) ){
   /* That's a number */
}
0
répondu Nabab 2011-02-08 10:26:04

, Vous pouvez utiliser la fonction suivante pour trouver le plus grand [number] dans n'importe quelle chaîne.

Il renvoie la valeur du plus grand [number] comme un 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;
}

Démo

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 ce Violon!

0
répondu John Slegers 2016-01-21 00:07:32