Страницы

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

среда, 22 января 2020 г.

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

#javascript #регулярные_выражения #replace


Обрабатываю строку с помощью конструкции:

this.value = this.value.replace(/[^\w]/ig, '');

Заметил, что кириллические символы не воспринимаются как буквенные в JavaScript,
что отличается от поведения \w, например, для preg_replace в php.

Кодировка страницы UTF-8.

Решение А-я работает, но его недостаток - (предположительно) необходимость под каждый
алфавит, отличный от латиницы, прописывать соответствующий диапазон.

Прошу подсказать, есть ли возможность в js отследить буквенные символы в кириллице
без конструкции вида А-я? Существует ли универсальное решение?
    


Ответы

Ответ 1



Используйте библитеку 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);

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

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