У меня есть регулярное выражение JavaScript, которое в основном находит двухбуквенные слова. Проблема, похоже, в том, что он интерпретирует символы с акцентом как границы слов. Действительно, кажется, что
Граница слова ("\b") — это точка между двумя символами, у которой есть "\w" с одной стороны и "\W" с другой стороны (в любом порядке), при этом мнимые символы отсчитываются. начало и конец строки соответствуют "\W". Регулярное выражение AS3 для сопоставления слов с символами граничного типа в их
И с тех пор
\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]:"";