Hallo zusammen,
warum möchte der erste State nicht matchen?
<div id="celeron_cpu" data-type="symbol" data-device="celeron_cpu" data-get="mean" data-icon="fa-server" data-states='["[0-9]\.[0-9]*",".*"]' data-colors='["green","red"]' data-background-colors='["","white"]' data-classes='["","blink"]' data-background-icons='["","fa-circle"]' data-warn='old'></div>
Der wert von mean ist: 1.82331339280833
Laut https://regex101.com/ (https://regex101.com/) matched es.
Für mich passt auch das Beispiel aus dem Wiki nicht zum Code. Der Punkt müsste doch escaped werden.
data-states='["3.[0-9]","2.[789]","2.[456]","2.[123]","((2.0)|([01].[0-9]))"]'
indexOfRegex: function (array, find) {
var len = array.length;
for (var i = 0; i < len; i++) {
try {
var match = find.match(new RegExp('^' + array[i] + '$'));
if (match)
return i;
} catch (e) { }
}
Vielen Dank
Tim
Keiner eine Idee?
@timmib
data-states='["[0-9]\.[0-9]*",".*"]'
Eine derartige Maskierung führt in Javascript zu keinem gewünschten Ergebnis.
data-states='["[0-9]\\.[0-9]*",".*"]'
Die in Javascript gebräuchliche doppelte Maskierung passt auf eine Zahl mit einer 1-stelligen Vorkomma- und beliebig vielen Nachkommastellen
Das obenstehende Muster kann auch so formuliert werden und führt zum identen Ergebnis:
data-states='["\\d\\.\\d*",".*"]'
\\d steht für eine digitale Ziffer - entspricht [0-9]
data-states='["2\\.\\d*","3\\.\\d*",".*"]'
Zahlen mit der 2 vor dem Komma passen auf das erste Muster, mit 3 vor dem Komma auf das zweite; der Rest aufs dritte ...
Vielen Dank, probier ich aus.
Funktioniert traumhaft!