Du kannst zumindest in der Funktion jeden Treffer checken.
Hab jetzt nicht verstanden, was du damit ausdrücken willst. Mich stört, dass das replace() immer wieder für jeden Datensatz ausgeführt wird, obwohl sich an dem übergebenen String nichts geändert hat.
Falls du wirklich rechnen willst, ja.
Natürlich ist der Anwender für den Inhalt verantwortlich, aber das gibt mir eval() ja auch zurück.
Und noch weiter gedacht - könnte man das auch rekursiv aufrufen?
Das könnte schwierig werden. Da die regulären Ausdrücke in JS nur einen begrenzten Funktionsumfang haben (wenn ich das jetzt richtig verstehe, dass evtl. Treffer [] verschachtelt sein können).
Ganz so komplex soll es nun wieder auch nicht werden. So sollen z.B. keine Variablen benutzt werden, um den Namen einer Variablen zu erzeugen - also _nicht_: [[[a[[[xy]]]]]]
Dagegen soll schon so etwas definiert werden können:
MITTELWERT[RECHNE[[[[v1]]]*0.95]]
Genau genommen hat das mit Rekursion nichts zu tun. Es muss aber festgelegt werden, in welcher Reihenfolge innerhalb von resolve() vorgegangen werden muss. Bevor also nach MITTELWERT gesucht wird, muss zunächst RECHNE ausgewertet worden sein.
Und wegen der Syntax muss ich mir wohl auch noch was einfallen lassen.
Ralf