如何检查给定字符串是否包含一个或多个日文字符(由假名和/或汉字组成)?
我在这里看到了一个类似的问题:How can I check if variable contains Chinese/Japanese characters?,我用解决方案提出了这个问题:
var containsJapanese = string.match(/[\u3400-\u9FBF]/);
然而,这会产生许多误报。
我通过让脚本遍历整个网页的内容(例如Facebook,Stack Overflow等)来测试它,并标记了应该包含日文文本的div。在这种情况下,大量的div最终会被错误标记。我还在做包含日文文本的页面上对它进行了测试,并且日语div在那里得到了正确的标记以及许多错误标记的div。
答案 0 :(得分:43)
检查这是否有效。我发现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 - ff9f
。来自ffa0 - ffdc
的代码点包含Hangul半角字符,这不是您想要的。您可能需要重新添加ffe0 - ffef
中的代码点,但它们大多是半角标点符号或全角货币符号。您可以查看网站并取消您不想要的任何范围,或确保它不会出现在您的输入中。
答案 1 :(得分:1)
使用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