Regex в JavaScript, работающем с кириллическим (российским) набором

Действительно ли возможно работать с российскими символами в regex JavaScript?
Возможно, использование \p {кириллица}?

Если да, обеспечьте основной пример использования.

Пример:

var str1 = "абв прв фву";
var regexp = new RegExp("[вф]\\b", "g");

 alert(str1.replace(regexp, "X"));

Я ожидаю добираться: абX прX

5
задан Cœur 8 February 2019 в 15:19
поделиться

3 ответа

Вот хорошая статья о JavaScript регулярных выражениях и юникоде . Строки в JavaScript 16 бит, поэтому строки и объекты RegExp могут содержать символы юникода, но большинство специальных символов типа '\b', '\d', '\w' поддерживают только ascii. Поэтому ваше регулярное выражение работает не так, как ожидалось, из-за использования '\b'. Похоже, вам придется найти другой способ определения границ слов.

.
6
ответ дан 18 December 2019 в 14:46
поделиться

Должно работать, если просто сохранить JavaScript-файл в UTF8. Тогда вы сможете ввести любой символ в строке.

редактирование: Только что сделал небольшой пример с некоторыми криллическими символами из Википедии:

var cryllic = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
cryllic.match( 'л.+а' )[0];
// returns as expected: "лмнопрстуфхцчшщъыьэюяа"
6
ответ дан 18 December 2019 в 14:46
поделиться

Согласно это :

JavaScript, который не предлагает ни одного Поддержка Unicode через его Regexp Класс, поддерживает \ Uffff для Соответствие единой точке кода Unicode как часть его строкового синтаксиса.

Итак, вы можете хотя бы использовать кодовые точки, но, казалось бы, ничего более (никаких классов).

Также проверьте этот дубликат вашего вопроса.

1
ответ дан 18 December 2019 в 14:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: