Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск русских слов с помощью \b не проходит (https://javascript.ru/forum/misc/8281-poisk-russkikh-slov-s-pomoshhyu-%5Cb-ne-prokhodit.html)

Jury 18.03.2010 11:36

Поиск русских слов с помощью \b не проходит
 
Всем привет,

стоит задача найти в строке полное слово. Для этого в RegExp обычно используется опция \b. Но она работает, похоже, только с английскими словами, с русским языком - не хочет.

var str = "Концерт Бони М";
var s = "Бони";

var regExp = new RegExp( s, "gi");
document.write( str.search(regExp) );

var regExp = new RegExp("\\b" + s + "\\b", "gi");
document.write( str.search(regExp) );

Теоретически оба write должны написать 8. Результат второго, однако -1.

Как все-таки правильно сделать поиск полных слов на русском ?

Gvozd 18.03.2010 11:49

Цитата:

Границей слова считается такая позиция в строке, в которой из текущего и последующего символа только один соответствует \w (т.е. один из них соответствует \w, а другой \W). Начало или конец строки также соответствуют границе слова в случае, если первый или, соответственно, последний символ совпадает с \w.
поэтому он не может ис пользоватся для русскоязычных слов, так как множество символов \w зависит от локали, и гарантировано содержит только английский алфавит.
по данному описанию нетрудно составить свою маску для выбора слов

e1f 18.03.2010 12:05

Jury, на форуме уже обсуждалась именно эта тема, 100%, и решение было в наличии. Воспользуйтесь поиском по форуму.


Часовой пояс GMT +3, время: 05:44.