Как создать регулярное выражение, учитывающее акцентированные символы?

У меня есть регулярное выражение JavaScript, которое в основном находит двухбуквенные слова. Проблема, похоже, в том, что он интерпретирует акцентированные символы как границы слов. Действительно, кажется, что

Граница слова ("\ b") - это точка между двумя символами, имеющими "\ w" на одной стороне и "\ W" на другая его сторона (в любом порядке), отсчитывая воображаемые персонажи начало и конец строки как соответствует "\ W". AS3 RegExp для сопоставления слов с символами граничного типа в них

И поскольку

\ w соответствует любым буквенно-цифровым символ (символы слова), включая подчеркивание (сокращение от [a-zA-Z0-9_]). \ W соответствует любым символам, не являющимся словами (сокращение от [^ a-zA-Z0-9_]) http://www.javascriptkit.com/javatutors/redev2.shtml

явно акцентированные символы не учитываются. Это становится проблемой со словами типа Montréal . Если é считается границей слова, то al - это двухбуквенное слово. Я попытался создать собственное определение границы слова, которое позволило бы использовать символы с диакритическими знаками, но, поскольку граница слова - это даже не символы, я точно не знаю, как ее найти ...

Любая помощь ?

Вот соответствующий код JavaScript, который выполняет поиск userInput и находит двухбуквенные слова с использованием регулярного выражения re_state :

var re_state = new RegExp("\\b([a-z]{2})[,]?\\b", "mi");
var match_state = re_state.exec(userInput);
document.getElementById("state").value = (match_state)?match_state[1]:"";

6
задан Community 23 May 2017 в 11:48
поделиться