2016-06-17 9 views
-2

Ich habe eine Zeichenfolge wie "33232323232120", die unterschiedlich lang sein kann. Ich möchte die letzten zwei Ziffern auswählen und prüfen, ob sie sich in einem Bereich befinden, z. Die Nummer muss zum Beispiel zwischen 0 und 5 liegen.JavaScript Regex - passen Sie die letzten 2 Ziffern und überprüfen Sie im numerischen Bereich

Heres, was ich habe, so weit:

\d{1}[0-5]$ 

Das paßt richtig auf den letzten 2 Ziffern jedoch paßt nicht richtig auf „20“ in dem obigen Beispiel also die Zahl nicht zwischen 0 und 5

Kann jemand beraten?

+0

Haben Sie es in einem regexp Aufruf tun müssen? Würden die letzten zwei Zeichen getrennt werden, sie nach int analysieren und dann testen? – user01

+0

* die Zahl muss zB zwischen 0 und 20 liegen *, aber dann stimmt * auf "20" falsch überein * Was ist das? ist 20 akzeptabel oder nicht? * Die Nummer ist nicht zwischen 0 und 5 * Woher kamen die 0 bis 5? –

+0

Entschuldigung. Ich habe das Beispiel überarbeitet, um klarer zu sein. Wenn der Bereich zwischen 0 und 5 liegt, sollte 20 nicht übereinstimmen. – Ben

Antwort

1

nur Sie benötigen

[01][0-9]$ 

Siehe die regex demo

Die [01] Streichhölzer 1 oder 0 und [0-9] Matches eine beliebige Ziffer. Sie passen also von 00 zu 19.

var vals = ["33232323232120","23445301","23445302","23445303","23445304","23445305","23445306","23445307","23445308","23445309","234453010","245841511","245841512","245841513","245841514","245841515","245841516","245841517","245841518","245841519","521","531"]; 
 
var rx = /[01][0-9]$/; 
 

 
// Demo 
 

 
document.body.innerHTML += "Pattern: <b>" + rx.source + "</b><br/>";        
 
for (var s = 0; s < vals.length; s++) { 
 
    document.body.innerHTML += "Testing \"<i>" + vals[s] + "</i>\"... "; 
 
    document.body.innerHTML += "Matched: <b>" + rx.test(vals[s]) + "</b><br/>"; 
 
}

+1

Tolles Zeug! Vielen Dank für die Erklärung, super hilfreich. – Ben

0

Hallo Ich denke, alle letzten 2 Ziffern wählen Sie \d{2}$
verwenden können, wenn Sie die letzte Zahl sogar auswählen möchten, wenn es nur eine einzelne Ziffer (0-9) ist Sie \d{2}$|\d$

Ihre regex verwenden können Werke in meinem Versuch here
Von meinem Verständnis wird Ihr Code die letzten zwei Ziffern wählen für alle Zehner und im Bereich von 0-5

+0

vielen Dank, aber in meinem Beispiel ist 20 jedoch ausgewählt 20 ist nicht größer als 0 und kleiner als 5 dh in Reichweite. – Ben

+0

Für den Fall, dass Sie nur 01,02,03,04,05 bekommen möchten, können Sie diese Regex '[0] [0-5] $'
verwenden. Dies gibt nur die oben angegebene Nummer zurück. – SatriaPriambada