web-dev-qa-db-de.com

Regulärer Ausdruck [beliebige Zahl]

Ich muss auf "[beliebige Nummer]" in einem String in Javascript testen. wie würde ich es passen?

Oh, "[" und "]" müssen auch übereinstimmen. 

zeichenfolge wie "[1]" oder "[12345]" ist eine Übereinstimmung.

Nichtübereinstimmung: "[23432" oder "1]" 

Also zum Beispiel:

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

Ich muss Eingabefelder name ersetzen: "items [0] .firstname" bis "items [1] .firstname" Danke

25
ShaneKm

UPDATE: für Ihre aktualisierte Frage

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

Versuche dies:

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

Hoffe das hilft!

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

Sie können die folgende Funktion verwenden, um den größten [number] in einer beliebigen Zeichenfolge zu finden.

Es gibt den Wert des größten [number] als Integer zurück.

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

Die folgende Demo berechnet bei jedem Klicken auf die Schaltfläche die größte Zahl in Ihrem Textbereich.

Sie können damit mit dem Textbereich herumspielen und die Funktion mit einem anderen Text erneut testen.

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>

Siehe auch this Fiddle !

0
John Slegers