使用JavaScript检查一个字符串是否包含日文字符(包括汉字)

如何检查给定的字符串是否包含一个或多个日文字符(由假名和/或汉字组成)?

我在这里看到了类似的问题:如何检查变量是否包含中文/日文字符? ,我用这个解决方案来解决这个问题:

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

但是,这给了很多误报。

我已经通过脚本遍历整个网页的内容来测试它 - 例如Facebook,Stack Overflow等 - 并且标记包含日文文本的div。 在这些情况下,大量的div最终会被误判。 我也在包含日文文本的页面上测试过,日文版的div最终会在很多标记错误的div上正确标记。


检查这是否有效。 我发现这个网站似乎列出了所有可能在日文文本中使用的Unicode字符。

相应的正则表达式(对于单个字符)将是:

/[u3000-u303fu3040-u309fu30a0-u30ffuff00-uff9fu4e00-u9fafu3400-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 - ffef ff00 - ff9fffa0 - ffdc中的代码点包含Hangul半角字符,这不是您想要的。 您可能需要重新添加来自ffe0 - ffef的代码点,但它们大多是半角标点或全角货币符号。
  • 您可以检查网站并取消您不需要的任何范围,或确保它不会出现在您的输入中。


    使用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
    
    链接地址: http://www.djcxy.com/p/70445.html

    上一篇: Using JavaScript to check whether a string contains Japanese characters (including kanji)

    下一篇: Kendo Grid :TypeError: $(...).saveAsExcel is not a function