Таким образом, ответ прост: вы не можете использовать нативные механизмы JavaScript или любую библиотеку, которая использует эти механизмы для сопоставления слов так, как вы хотите.Как вы уже сказали, \ b соответствует словам.Слова должны состоять из символов слова.И в JavaScript (и на самом деле в других реализациях регулярных выражений символами слова являются az, AZ, 0-9 и _ . Но многие другие языки просто реализуют метасимвол \ b другим способом, чем JavaScript.
Ответ «JavaScript не поддерживает Юникод» немного прост и на самом деле совершенно неправильный. JavaScript просто не использует юникод для классов символов. Если JavaScript не поддерживает юникод, вы даже не можете использовать символы Юникода в строкелитералы и, конечно, это возможно в JavaScript.
Согласно Стандарту ECMA 262 (ECMAScript) (Раздел 15.10.2.6):
[...]Для вычисления Assertion :: \ b возвращается внутреннее замыкание AssertionTester, которое принимает аргумент State x и выполняет следующее:
- Пусть e будет endIndex для x.
- Вызов IsWordChar (e–1) и пусть a будет логическим результатом.
- Вызовите IsWordChar (e) и пусть b будет логическим результатом.
- Если a равно true, а b равно falseе, верни истину.
- Если a равно false и b равно true, вернуть true.
- Вернуть ложь.[..]
Абстрактная операция IsWordChar принимает целочисленный параметр e и выполняет следующее:
- Если e == –1 или e == InputLength, вернуть false,
- Пусть c будет символом Input [e].
- Если c - один из шестидесяти трех символов ниже, верните true.abcdefghijklmnopqrstu vwxyz ABCDEFGHIJKLMNOPQRSTU VWXYZ 0 1 2 3 4 5 6 7 8 9 _
- Вернуть false
Это просто показывает, что \ b использует алгоритм «isWordChar» для проверки, еслито, что вы пытаетесь сопоставить, на самом деле является словом.В определении «isWordChar» вы можете увидеть точное определение того, какие символы будут возвращать true для «isWordChar».
В моем мнении это не имеет абсолютно никакого отношения к используемому набору символов.Это ни ASCII, ни UNICODE компилятор здесь.Это всего лишь 63 персонажа.