编程语言
首页 > 编程语言> > 使用JavaScript测试输入是韩文还是中文的正确方法是什么?

使用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范围内.

如果输入仅包含韩文字符,我应该如何纠正此函数以使其返回true?

解决方法:

这是您需要韩文的unicode范围(取自其wikipedia页).

U+AC00–U+D7AF
U+1100–U+11FF
U+3130–U+318F
U+A960–U+A97F
U+D7B0–U+D7FF

因此,您的regex .match应该如下所示:

const match = input.match(/[\uac00-\ud7af]|[\u1100-\u11ff]|[\u3130-\u318f]|[\ua960-\ua97f]|[\ud7b0-\ud7ff]/g);

标签:chinese-locale,javascript,unicode
来源: https://codeday.me/bug/20191014/1912463.html