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