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
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!
var mask = /^\d+$/;
if ( myString.exec(mask) ){
/* That's a number */
}
, 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!