Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript测试输入是韩语还是汉语的正确方法是什么?_Javascript_Unicode_Chinese Locale - Fatal编程技术网

使用JavaScript测试输入是韩语还是汉语的正确方法是什么?

使用JavaScript测试输入是韩语还是汉语的正确方法是什么?,javascript,unicode,chinese-locale,Javascript,Unicode,Chinese Locale,我的应用程序依赖此函数来测试字符串是否为韩语: const isKoreanWord = (input) => { const match = input.match(/[\u3131-\uD79D]/g); return match ? match.length === input.length : false; } isKoreanWord('만두'); // true isKoreanWord('mandu'); // false 直到我开始包括中国人的支持,现在这个功能

我的应用程序依赖此函数来测试字符串是否为韩语:

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范围(取自其页面)

因此,您的正则表达式
.match
应该如下所示:

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

你说的“韩国人”是指韩国语因为汉字在韩国也被使用。要求区分“汉字”和“韩国语汉字”就像要求区分英语和法语一样。@deceze是的,我的意思是韩语。如何区分韩语和韩语。@deceze我也不认为你的比较是正确的,因为英语和法语源于拉丁语,所以是的,比较这两种语言非常困难,而韩国人使用汉语作为基础语言和汉语,嗯。。。使用中文作为自己的历史基础语言。我只是在谈论使用的书写系统。如果你只看字母的范围,英语和法语是无法区分的。同样地,只要看到几个汉字,就几乎不可能分辨出它是一个中文单词还是韩国语中使用的单词。“韩国语字符”的意思是韩国语,也不例外。这在
매장 이름
@KarmaBlackshaw这只匹配单个字符,不匹配句子。您可能需要调整正则表达式以包含空格和其他特殊字符。
const match = input.match(/[\uac00-\ud7af]|[\u1100-\u11ff]|[\u3130-\u318f]|[\ua960-\ua97f]|[\ud7b0-\ud7ff]/g);