Используя JavaScript, чтобы проверить, содержит ли строка японские символы (включая иероглифы) - программирование
Подтвердить что ты не робот

Используя JavaScript, чтобы проверить, содержит ли строка японские символы (включая иероглифы)

Как проверить, содержит ли данная строка один или несколько японских символов (состоящих из каны и/или кандзи)?

Я видел аналогичный вопрос: Как проверить, содержит ли переменная китайские/японские символы?, и я использовал решение, чтобы придумать следующее:

var containsJapanese = string.match(/[\u3400-\u9FBF]/);

Однако это дает много ложных срабатываний.

Я протестировал его, выполнив script итерацию содержимого всех веб-страниц - например, Facebook, переполнение стека и т.д. - и отметив divs, которые якобы содержат японский текст. В этих случаях большое количество фидов заканчивается ошибкой. Я также тестировал его на страницах, которые содержат японский текст, а японские дивы заканчиваются тем, что помечены правильно рядом со многими некорректно отмеченными div.

4b9b3361

Ответ 1

Проверьте, работает ли это или нет. Я нашел этот веб-сайт, который, кажется, перечисляет все символы в Юникоде, которые могут быть использованы в японском тексте.

Соответствующее регулярное выражение (для одиночного символа) будет:

/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/
  -------------_____________-------------_____________-------------_____________
   Punctuation   Hiragana     Katakana    Full-width       CJK      CJK Ext. A
                                            Roman/      (Common &      (Rare)    
                                          Half-width    Uncommon)
                                           Katakana

Диапазоны (как указано на сайте):

  • 3000 - 303f: пунктуация в японском стиле
  • 3040 - 309f: Хирагана
  • 30a0 - 30ff: Катакана
  • ff00 - ff9f: Полноразмерные римские символы и полуширина Катакана
  • 4e00 - 9faf: унифицированные идеограммы CJK - общий и необычный кандзи
  • 3400 - 4dbf: унифицированные идеограммы CJK Расширение A - редкое кандзи

Я немного изменил диапазоны:

  • Я изменил с ff00 - ffef на ff00 - ff9f для полноразмерных римских символов и полуширины Katakana. Кодовые точки из ffa0 - ffdc содержат символы полуширины Hangul, которые не то, что вы хотите. Возможно, вы захотите повторно добавить кодовые точки из ffe0 - ffef, но в основном это полутоны или символы полной ширины валюты.

Вы можете проверить сайт и снять любой диапазон, который вам не нужен, или убедиться, что он не появится на вашем входе.

Ответ 2

Используйте функцию charCode для обнаружения японского языка. Например, (с веб-сайта http://www.jpf.go.jp/j/index.html)

 var a=$('a[href$="culture/new/index.html"]').text();
  a=a+'K';
 for(i=0;i<3;i++){ //3 as i knew it was length 3. Please use string.length
    console.log(a.charCodeAt(i));
   //Detect the charCode here and use break on match
 }


 Output : 19968 35239 75