Страницы

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

понедельник, 15 октября 2018 г.

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

Поясните, пожалуйста, почему не работает граница слова \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 для русских слов:");


Ответ

Правила работы регулярных выражений описаны в спецификации
При проверке \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 _
Как видно, здесь отсутствуют все символы, кроме английского, цифр и знака подчеркивания.

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

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