Я пытался создать регулярное выражение, которое заменит слово, которое может содержать или не содержать символы акцента. Я изучал это в течение последних двух дней, но не могу найти информацию, необходимую мне для решения моей проблемы.Повторное выражение Javascript для замены слова, которое может содержать символы акцента
Я придумал простые регулярные выражения, который обрабатывает слова без ударения символов больших:
var re = new RegExp('(?:\\b)hello(?:\\b)', 'gm');
var string = 'hello hello hello world hellos hello';
string.replace(re, "FOO");
Результат: FOO FOO FOO world hellos FOO
Вышеуказанных работ, как я хочу. Проблема с приведенным выше кодом заключается в том, когда слово содержит символ акцента в качестве первого или последнего символа в строке. Пример:
var re = new RegExp('(?:\\b)helló(?:\\b)', 'gm');
var string = 'helló helló helló world hellós helló';
string.replace(re, "FOO");
Результат: helló helló helló world FOOs helló
Желаемый результат: FOO FOO FOO world hellós FOO
Из моего понимания, выше происходит потому, акцентированный характер интерпретируется как граница. Моя попытка решить эту проблему (обратите внимание: диапазон [A-zÀ-ÿ]
является то, что я считаю, что правильный алфавит, чтобы построить слово):
var re = new RegExp('([^A-zÀ-ÿ]|^)helló([^A-zÀ-ÿ]|$)', 'gm');
var string = 'helló helló helló world hellós helló';
string.replace(re, "$1FOO$2");
Результат: FOO helló FOO world hellós FOO
Как вы можете видеть, я гораздо ближе к желаемый результат. Однако проблема возникает, когда рассматриваемое слово появляется три или более раза подряд. Обратите внимание, что второе появление helló
было проигнорировано. Я считаю, что это связано с тем, что предшествующее им пробелы уже было сопоставлено с первым вхождением helló
.
Есть ли у кого-нибудь какие-либо предложения о том, как достичь FOO FOO FOO world hellós FOO
?
Скорее всего, дубликат http://stackoverflow.com/questions/5436824/matching-accented-characters-with-javascript-regexes, но я не использую hamer до тех пор, пока не подтвержутся – mplungjan
Можете ли вы точно объяснить, что требования для сопоставляя слово? Он заменяется для любого экземпляра в любом месте строки или в определенном месте. Поэтому вместо этого регулярного выражения почему бы не «hello \ B'? – 10100111001