Regex WordWrap с символами UTF8 в JS - PullRequest
       6

Regex WordWrap с символами UTF8 в JS

2 голосов
/ 24 сентября 2010


Я уже прочитал все статьи здесь, которые касаются подобной проблемы, но все еще не получают никакого решения. В моем случае я хочу обернуть каждое слово строки с пролетом. Слова содержат специальные символы, такие как «äüö ...»

Что я сейчас делаю:

var textWrap = text.replace(/\b([a-zA-Z0-9ßÄÖÜäöüÑñÉéÈèÁáÀàÂâŶĈĉĜĝŷÊêÔôÛûŴŵ-]+)\b/g, "<span>$1</span>");

Но что происходит, так это то, что если символ aüñ или какой-либо другой не-Ascii символ находится в конце или в начале, он также действует как граница. Находясь внутри слова, эти символы не действуют как граница.

'Ärmelkanal' becomes Ä<span>rmelkanal</span> but should be <span>Ärmelkanal</span>
'Käse'works fine... becomes <span>Käse</span>
'diré' becomes <span>dir</span>é but should be <span>diré</span>

Любой совет будет очень признателен. Мне нужно сделать это на стороне клиента :-( Кстати, я упоминал, что я ненавижу регулярные выражения; -)

Большое спасибо!

1 Ответ

1 голос
/ 24 сентября 2010

Проблема в том, что JavaScript распознает границы слов только до / после букв ASCII (и цифр / подчеркивания). Просто бросьте \b якоря, и оно должно работать.

result = subject.replace(/[a-zA-Z0-9ßÄÖÜäöüÑñÉéÈèÁáÀàÂâŶĈĉĜĝŷÊêÔôÛûŴŵ-]+/g, "<span>$&</span>");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...