- PVSM.RU - https://www.pvsm.ru -

Ко дню рождения Далай-ламы

Вчера я шёл куда-то по городу и вдруг задумался, как можно реализовать на JavaScript деление строки по символам при помощи регулярного выражения и с полным учётом Юникода.

После перехода от Perl к JavaScript много лет тому назад, я всё испытывал за свой новый язык некоторый комплекс неполноценности из-за недостаточной поддержки Юникода. За всё то время, пока JavaScript совершал в этом направлении свой большой скачок (при переходе от ES5 к ES6), у меня в закладках осталось несколько хороших статей.

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) [1]
JavaScript has a Unicode problem [2]
Unicode-aware regular expressions in ECMAScript 6 [3]
ES6 Strings (and Unicode, ) in Depth [4]

В последней из них предлагался рецепт разбиения строки на символы с учётом Юникода при помощи нового оператора ... Например (хабровский парсер не даёт почему-то ввести этот пример кодом, заменяет мультибайтовые символы на пустые строки):

Ко дню рождения Далай-ламы - 1

И вот я вчера задумался, можно ли реализовать то же самое при помощи новых регулярных выражений. В голову пришла простая идея, которая на поверку оказалась верна:

Ко дню рождения Далай-ламы - 2

Сегодня я внезапно понял, что вчера как раз был день рождения Далай-ламы. Поэтому мне показалось, что завершить эту заметку можно небольшой шуткой на JavaScript в честь виновника торжества.

const nothingness = /[^]{0}/;
const nothing = '';

console.log(nothing.search(nothingness));
// 0
console.log(nothing.match(nothingness));
// [ '', index: 0, input: '' ]
console.log(nothing.split(nothingness));
// []
console.log(nothing.replace(nothingness, nothing));
// ''
console.log(nothingness.test(nothing));
// true

Ко дню рождения Далай-ламы - 3

Автор: vmb

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/152225

Ссылки в тексте:

[1] The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!): http://www.joelonsoftware.com/articles/Unicode.html

[2] JavaScript has a Unicode problem: https://mathiasbynens.be/notes/javascript-unicode

[3] Unicode-aware regular expressions in ECMAScript 6: https://mathiasbynens.be/notes/es6-unicode-regex

[4] ES6 Strings (and Unicode, ) in Depth: https://ponyfoo.com/articles/es6-strings-and-unicode-in-depth

[5] Источник: https://habrahabr.ru/post/305096/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best