Rolf B: Verständnisfrage zu Regex in JS und HTML

Beitrag lesen

Hallo Nico R.,

die HTML Spec besagt, dass die Regex im pattern-Attribut nicht 1:1 nach JavaScript übertragen wird. Statt dessen wird sie mit

"^(?:" + pattern + ")$"

umhüllt, bevor sie der JavaScript-Engine zur Auswertung anvertraut wird.

^ und $ verankern die Regex am Anfang und Ende des geprüften Texts, und die Klammerung mit (: ) erzeugt eine non-capturing group - d.h. der Inhalt wird gegen den Text gematcht, es wird aber nichts gespeichert, was sich später als "gib mir den Inhalt der x-ten gematchten Klammergruppe" abfragen ließe. Ich nehme an, das hat Performancegründe und soll mögliche Speicherüberlaufattacken erschweren.

Ohne die Verankerung mit ^ und $ matcht deine Regexp erfolgreich die 1 und hört vor dem b auf. Mit der Verankerung merkt sie, dass hinter der 1 der String nicht zu Ende ist und schlägt fehl.

Rolf

--
sumpsi - posui - obstruxi