У меня есть регулярное выражение 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]:"";