#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);
Комментариев нет:
Отправить комментарий