Вопрос

В 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")

Другие советы

Не все реализация Regexp javaScript имеет поддержку AD Unicode, поэтому вам нужно избежать его

"αβ αβγ γαβ αβ αβ".replace(/\u03b1\u03b2/g, "AB"); // "AB ABγ γAB AB AB"

Для отображения персонажей вы можете взглянуть на http://htmlhelp.com/reference/html40/ustietities/symbols.html.

Конечно, это не помогает со словом граничной проблемой (как объяснено в других ответах), но, по крайней мере, следует, по крайней мере, позволит вам правильно соответствовать символам

Мне нужно было что-то, чтобы быть программируемым и обрабатывать пунктуацию, скобки и т. Д.

http://jsfiddle.net/aqvyd/

var wordToReplace = '買い手',
    replacementWord = '[[BUYER]]',
    text = 'Mange 買い手 information. The selected Store and Classification will be the default on the สั่งซื้อ.'

function replaceWord(text, wordToReplace, replacementWord) {
    var re = new RegExp('(^|\\s|\\(|\'|"|,|;)' + wordToReplace + '($|\\s|\\)|\\.|\'|"|!|,|;|\\?)', 'gi');
    return text.replace(re, replacementWord);
}

Я написал редактор ресурсов JavaScript, поэтому именно поэтому я нашел эту страницу, а также ответил на него не по необходимости, поскольку я не смог найти слово параметра параметризованного Regexp, которое хорошо работало для Unicode.

Не все реализации Regex связаны с JavaScript MESSINGS, в курсе Unicode осознает.

Например, Microsofts JScript использует в IE, ограничен ANSI.

Когда вы имеете дело с Unicode и словами на натуральные слова, вы, вероятно, хотите быть более осторожными с границами, чем просто использовать \b. Отказ Видеть Этот ответ для деталей и направлений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top