regex 使用JavaScript检查字符串是否包含日语字符(包括汉字)

cclgggtu  于 2023-03-04  发布在  Java
关注(0)|答案(3)|浏览(175)

如何检查给定的字符串是否包含一个或多个日语字符(包括假名和/或汉字)?
我在这里看到了类似的问题:How can I check if variable contains Chinese/Japanese characters?,我使用该解决方案得出以下结果:

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

然而,这会产生许多假阳性。
我测试过它,让一个脚本遍历整个网页的内容--比如Facebook、Stack Overflow等--并标记那些应该包含日语文本的div。在这种情况下,大量的div最终会被错误地标记。我还在那些 * 确实 * 包含日语文本的页面上测试过它。并且日本的div最终与许多标记错误的div一起被正确地标记。

p5cysglq

p5cysglq1#

检查这是否有效。我发现this website似乎列出了所有可能在日语文本中使用的Unicode字符。
对应的正则表达式(对于单个字符)为:

/[\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 - ff9fffa0 - ffdc中的代码点包含韩文半角字符,这不是您想要的。您可能希望重新添加ffe0 - ffef中的代码点,但它们大多是半角标点符号或全角货币符号。

您可以检查站点并删除任何不需要的范围,或者确保它不会出现在您的输入中。

vfh0ocws

vfh0ocws2#

使用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
ecfdbz9o

ecfdbz9o3#

检查平假名的实际大小/^[-]+$/

相关问题