Обрабатываю строку с помощью конструкции:
this.value = this.value.replace(/[^\w]/ig, '');
Заметил, что кириллические символы не воспринимаются как буквенные в JavaScript, что отличается от поведения \w, например, для preg_replace в php
Кодировка страницы UTF-8.
Решение А-я работает, но его недостаток - (предположительно) необходимость под каждый алфавит, отличный от латиницы, прописывать соответствующий диапазон.
Прошу подсказать, есть ли возможность в js отследить буквенные символы в кириллице без конструкции вида А-я? Существует ли универсальное решение?
Ответ
Используйте библитеку XRegExp, в которой осуществлена поддержка категорий Юникода в регулярных выражениях. Чтобы найти все символы, являющиеся буквами любого алфавита, нужно использовать \pL/\p{L}, а чтобы найти все остальные символы, используйте \PL/\p{^L}
var str = "Пора поговорить с ним tête-à-tête.";
var regex = new XRegExp('\\PL'); // определение регулярного выражения
//var regex = new XRegExp('[^\\pL\\s]'); // => Пора поговорить с ним têteàtête (если надо оставить пробелы или добавить исключения)
var result = XRegExp.replace(str, regex, '', 'all'); // 'all' - заменить все вхождения
console.log(result);
Комментариев нет:
Отправить комментарий