Symbol data-state matched nicht

Begonnen von timmib, 30 Januar 2021, 23:43:05

Vorheriges Thema - Nächstes Thema

timmib

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/ 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

timmib


OdfFhem

@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 ...

timmib


timmib