There's a related discussion (https://www.zsh.org/mla/workers/2018/msg00567.html) on the zsh mailing list about the [[:blank:]] character class.
That's not one of the original POSIX character classes. I understand it was added when C99 added isblank() which was inspired by GNU libc's isblank() (there since at least as far back as 1991). I could not find any standard documentation that clarifies what's that meant to be for. All we know is that it's a subset of [:space:] and should include at least SPC and TAB. I always thought that it was meant to be horizontal whitespace. That is characters commonly found in text files that introduce spacing *within* a line. But then some locales on NetBSD include \v (vertical tabulation) and most on OpenBSD include \v and \f (form feed/page break). ISO/IEC TR 30112 (see draft at http://www.open-std.org/JTC1/SC35/WG5/docs/30112d10.pdf) wants to exclude (from [:space:] and as a result from [:blank:] as well) characters that should not be considered as "boundaries" (like the non-breaking space). Without clear direction, in practice what [[:blank:]] matches outside the POSIX locale is completely random and inconsistent from one system to the next. Does/should POSIX offer an opinion on that? -- Stephane