В JavaScript:
"ab abc cab ab ab".replace(/\bab\b/g, "AB");
правильно дает мне:
"AB abc cab AB AB"
Когда я использую utf-8 символы хотя:
"αβ αβγ γαβ αβ αβ".replace(/\bαβ\b/g, "AB");
граничный оператор слова, кажется, не работает:
"αβ αβγ γαβ αβ αβ"
Существует ли решение этого?
Утверждение границы слова соответствует только в том случае, если символу слова не предшествует или не следует другой символ слова (поэтому . \ B.
равно ] \ W \ w
и \ w \ W
). А \ w
определяется как [A-Za-z0-9 _]
. Итак, \ w
не соответствует греческим символам. Таким образом, вы не можете использовать \ b
в этом случае.
Вместо этого вы могли бы использовать следующее:
"αβ αβγ γαβ αβ αβ".replace(/(^|\s)αβ(?=\s|$)/g, "$1AB")
Не все реализации RegEx, связанные с механизмами Javascript, поддерживают Unicode.
Например, использование Microsoft JScript в IE ограничено ANSI.
Не все реализации Javascript regexp имеют поддержку объявления Unicode, поэтому вам нужно его экранировать
"αβ αβγ γαβ αβ αβ".replace(/\u03b1\u03b2/g, "AB"); // "AB ABγ γAB AB AB"
Для отображения символов вы можете взглянуть на http://htmlhelp.com/reference/html40/entities/symbols.html
Конечно, это не поможет с проблемой границ слов (как объясняется в других ответах), но по крайней мере позволит вам правильно сопоставить символы