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.