Podpora Safari s XRegExp 0.2.2

Když jsem před několika dny vydal XRegExp 0.2, ještě jsem netestoval v Safari nebo Swiftu. Když jsem si na to krátce poté vzpomněl, zjistil jsem, že se to oběma těm prohlížečům založeným na WebKitu nelíbilo a při pokusu o jejich použití často padaly! To byla zjevně velmi špatná věc, ale kvůli velkým problémům s časovou dostupností jsem se až do dnešní noci nemohl dostat k hloubkovému hledání chyb a testování.

Ukázalo se, že motor regulárního výrazu Safari obsahuje chybu, která způsobuje vyvolání chyby při kompilaci regulárního výrazu obsahujícího třídu znaků končící na "[\\ ".

."
// These throw an error:
[ /[[\\]/ , /[^[\\]/ , /[abc[\\]/ ]

// ...While these are all fine:
[ /[\\[]/ , /[\[\\]/ , /[[]/ , /[\\]/ , /[[\\abc]/ , /[[\/]/ , /[[(\\]/ ]

// Testing:
try {
	RegExp("[[\\]");
	alert("OK!");
} catch (err) {
	alert(err);
	/* Safari shows:
	"SyntaxError: Invalid regular expression: missing terminating ] for
	character class" */
}

V důsledku toho jsem změnil dvě instance [^[\\] do [^\\[] a zvýšil číslo verze na 0.2.2. XRegExp byl nyní testován a funguje bez jakýchkoliv známých problémů ve všech následujících prohlížečích:

  • Internet Explorer 5.5 – 7
  • Firefox 2.0.0.4
  • Opera 9.21
  • Safari 3.0.2 beta pro Windows
  • Swift 0,2

Nejnovější verzi můžete získat zde.