Pro JavaScript není mezera jako mezera
Nálepky:
Pokud používáte v JavaScriptu regulární výrazy pro práci s řetězci, můžete se setkat s podivnými odlišnostmi implementace metaznaku s (whitespace – mezery, tabelátory apod.). Všechny prohlížeče správně vyhodnotí znaky jako U+0020
(mezera), U+000A
(LF) nebo U+000B
(vertikální tabulátor). Co je překvapivější, tak některé prohlížeče (Safari do verze 3.2.1, IE 6–8) do s nezapočítají nerozdělitelnou mezeru U+00A0
. V tom, jak vyhodnocují znaky nad U+2000
, kde se vyskytují různé tenké mezery, vlasové mezery, čtvrtčtverčíkové mezery, „em“ a „en“ mezery a další, panuje už naprostý chaos. Přehledně se touto problematikou zabývá článek Whitespace deviations.
Jen bych si dovolil pro úplnost doplnit, že implementace regulárních výrazů má více nepřesností, než pouze whitespaces.
http://blog.stevenlevithan.com/…-and-unicode
http://blog.stevenlevithan.com/…m-javascript
a pokud někdo hodně spoléhá na regexy, doporučuji: http://xregexp.com/