molily: undefined als Ergebnis in RegExp

Beitrag lesen

Hallo,

Was hat "undefined" im Ergebnis zu suchen?

Das ist offenbar so definiert. Ich finde nicht die genaue Stelle, aber in ECMAScript gibt es ein Beispiel für den |-Operator:

»Any capturing parentheses inside a portion of the pattern skipped by | produce undefined values instead of strings. Thus, for example,

/a|ab/.exec("abc")

returns the result "a" and not "ab". Moreover,

/( (a)|(ab) ) ( (c)|(bc) )/.exec("abc")

returns the array

[
"abc",
 "a",
  "a",
  undefined,
 "bc",
  undefined,
  "bc"
]

(...)«

Woanders:

»/(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac")
which returns the array
[
"zaacbbbcac",
 "z",
 "ac",
  "a",
  undefined,
  "c"

(Einrückungen und Leerraum von mir entsprechend der Klammerung.)

Wenn für den optionalen Teilausdruck nur der Quantifier "keinmal" greift, erwarte ich, daß im Ergebnisarray auch bloß ein leerer String dafür auftaucht – nichts Undefiniertes.

Ein leerer String ist ungeeignet, weil damit gesagt wäre, dass das Pattern einen leeren String gefunden hätte, was etwas anderes ist als dass es gar nicht gepasst hat. Ich hätte eher null erwartet, das wäre der sinnigste Wert. Aber was sollen wir darüber streiten, es ist nunmal so im Standard festgelegt.

Mathias