JavaScript (przynajmniej wersje najczęściej używane) nie obsługuje w pełni Unicode. Oznacza to, że \w
dopasowuje tylko litery łacińskie, cyfry dziesiętne i podkreślenia ([a-zA-Z0-9_]
), a \b
dopasowuje granicę między znakiem słownym i nie-słowem.
Aby znaleźć wszystkie wyrazy w ciąg wejściowy z wykorzystaniem łaciny lub cyrylicy, trzeba by zrobić coś takiego:
.match(/[\wа-я]+/ig); // where а is the Cyrillic а.
Lub jeśli wolisz:
.match(/[\w\u0430-\u044f]+/ig);
Oczywiście będzie to prawdopodobnie oznacza, że musisz trochę zmodyfikować swój kod, ponieważ tutaj będzie on dopasowywał wszystkie słowa, a nie granice słów. Zauważ, że [а-я]
pasuje do dowolnej litery w "podstawowym alfabecie cyrylicą", zgodnie z opisem here. Aby dopasować litery spoza tego zakresu, możesz odpowiednio zmodyfikować zestaw znaków, aby uwzględnić te litery, np. aby dopasować również rosyjski Ё/ё, użyj [а-яё]
.
Należy również pamiętać, że wzór potrójnej wspornik można uprościć do:
.replace(/\[{3}[^]]*]{3}/g, '')
Alternatywnie, można zajrzeć do projektu-który XRegExp jest projektem open-source, aby dodać nowe funkcje do bazy Mechanizm wyrażeń regularnych w języku JavaScript - i jego dodatek o nazwie Unicode.
Nie jesteś pewien, co próbujesz zrobić, ale nie powinieneś ".trim(). Split (/ \ s + /). Length" zrobić to dla każdego alfabetu? – Bergi
@Bergi nie, jeśli OP chce policzyć ciąg '" jak ... to "' jako 2 słowa. –