Страницы

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

суббота, 14 декабря 2019 г.

Регулярное выражение: у русских слов нет границы “\b”?

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


Поясните, пожалуйста, почему не работает граница слова \b для русских слов, в то
время, когда для английских работает.


var str = "one один two два three"

var work = str.match(/([\w])+\b|([а-я])+/giu);
console.log(work, ":Без \\b для русских слов:");

                                      //вот тут
var notWork = str.match(/([\w])+\b|([а-я])+\b/giu);
console.log( notWork, ":c \\b для русских слов:");



    


Ответы

Ответ 1



Правила работы регулярных выражений описаны в спецификации При проверке \b выполняются следующие шаги: Выполняется функция IsWordChar для текущего символа и предыдущего. Если полученные значения различаются - возвращается true В противном случае - false. Что представляет из себя функция IsWordChar? В данной функции идет простая проверка вхождения символа в заранее заданный список символов. Список символов включает в себя следующие 63 (26*2+10+1) символов, жестко прописанных в спецификации: a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ Как видно, здесь отсутствуют все символы, кроме английского, цифр и знака подчеркивания.

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

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