使用 JavaScript 测试输入是韩文还是中文的正确方法是什么?
What is proper way to test if the input is Korean or Chinese using JavaScript?
我的应用程序依赖此函数来测试字符串是否为韩语:
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 范围内造成的。
如果输入仅包含韩文字符,我应该如何更正此函数以使其 returns true
?
这是您需要的韩语 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);
匹配韩语字符的较短版本
const regexKorean = /[\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF]/g
我的应用程序依赖此函数来测试字符串是否为韩语:
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 范围内造成的。
如果输入仅包含韩文字符,我应该如何更正此函数以使其 returns true
?
这是您需要的韩语 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);
匹配韩语字符的较短版本
const regexKorean = /[\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF]/g