Страницы

Поиск по вопросам

вторник, 12 марта 2019 г.

Как обработать кириллический буквенно-цифровой символ регулярным выражением?

Обрабатываю строку с помощью конструкции:
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);

Комментариев нет:

Отправить комментарий