我的应用程序依靠此功能来测试字符串是否为韩文:
const isKoreanWord = (input) => {
const match = input.match(/[\u3131-\uD79D]/g);
return match ? match.length === input.length : false;
}
isKoreanWord('만두'); // true
isKoreanWord('mandu'); // false
直到我开始包括中文支持,现在此功能都不一致:
isKoreanWord('幹嘛'); // true
我相信这是由于韩文字符和中文字符混合在同一个Unicode范围内引起的。
如果输入仅包含朝鲜语字符,我应该如何纠正此函数以使其返回true
?
答案 0 :(得分:5)
这是韩文所需的unicode范围(取自其wikipedia页)。
U+AC00–U+D7AF
U+1100–U+11FF
U+3130–U+318F
U+A960–U+A97F
U+D7B0–U+D7FF
因此您的正则表达式.match
应该如下所示:
const match = input.match(/[\uac00-\ud7af]|[\u1100-\u11ff]|[\u3130-\u318f]|[\ua960-\ua97f]|[\ud7b0-\ud7ff]/g);