Граница слова (\b) и кириллица в JavaScript
Попытка решения проблемы поддержки кириллицы в регулярных выражениях JavaScript
С этой проблемой я столкнулся при разработке системы приема частных объявлений. Проблема в том что \b или граница слова, отлично работает только с латинницей, однако встретив кириллицу, модификатор не срабатывает. Здесь я выложил небольшой пример проблемы.
Кстати говоря, кириллица также не видна для модификатора \w и это тоже иногда может порождать некоторые проблемы:
Вот и получается, что даже для такой, казалось бы, тривиальной задачи нужно писать костыли:(
Вот мой костыль:
var rx = ([\u0400-\u04FF]|\w)+(?=\s|\b|\W|$)
В PHP, кстати говоря, такой проблемы замечено не было - там регулярки сразу работают с UNICODE строками и, к примеру, вот эта регулярка из JS:
var rx_string = "(^|\\s|[^\\u0400-\\u04FF]|\\b)" + item.replace(".", "\\.") + "(?=\\s|[^\\u0400-\\u04FF]|\\b|$)";
была без проблем преобразована в:
// Вау! php поддерживает границы слов с кириллическими символами!
$rx_string = "(^|\s|\b)" . str_replace(".", "\.", $val) . "(?=\s|\b|$)";