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

标签 javascript regex string kana

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

我在这里看到了类似的问题:How can I check if variable contains Chinese/Japanese characters? ,我用这个解决方案得出了这个:

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

但是,这会产生许多误报。

我通过让脚本迭代整个网页的内容(例如 Facebook、Stack Overflow 等)并标记可能包含日语文本的 div 来对其进行了测试。在这些情况下,大量 div 最终会被错误标记。我还在包含日语文本的页面上进行了测试,其中的日语 div 最终与许多错误标记的 div 一起被正确标记。

最佳答案

检查这是否有效。我发现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:全 Angular 罗马字符和半 Angular 片假名
  • 4e00 - 9faf:CJK 统一表意文字 - 常见和不常见的汉字
  • 3400 - 4dbf:CJK 统一表意文字扩展 A - 稀有汉字

我稍微改变了范围:

  • 我已将全 Angular 罗马字符和半 Angular 片假名的字符从 ff00 - ffef 更改为 ff00 - ff9fffa0 - ffdc 中的代码点包含朝鲜文半 Angular 字符,这不是您想要的。您可能想要重新添加 ffe0 - ffef 中的代码点,但它们大多是半 Angular 标点符号或全 Angular 货币符号。

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

关于javascript - 使用JavaScript检查字符串是否包含日语字符(包括汉字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033196/

相关文章:

将特定字符与字符串进行比较

c - 如何只打印文件名

javascript - Google map InfoWindows 未关闭

javascript - 如何在鼠标悬停时在完整日历中显示开始和结束时间?

regex - 我们可以在 xpath 值中使用正则表达式吗?

python - 使 Python RegEx 使用变量作为字符串表达式

javascript - 使用 rangey 删除选择

javascript - 如何撤消对未同步集合的更改?

c++ - 如何修复重叠的 XML?

正则表达式搜索批量替换