如何检查给定字符串是否包含一个或多个日语字符(由假名和/或汉字组成)?
我在这里看到了类似的问题: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 - ff9f
。ffa0 - ffdc
中的代码点包含朝鲜文半 Angular 字符,这不是您想要的。您可能想要重新添加ffe0 - ffef
中的代码点,但它们大多是半 Angular 标点符号或全 Angular 货币符号。
您可以检查该网站并删除任何您不需要的范围,或者确保它不会出现在您的输入中。
关于javascript - 使用JavaScript检查字符串是否包含日语字符(包括汉字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033196/