如何验证“Hangul-Korean”文本?

use*_*080 6 java regex internationalization

我想在java中验证“Hangul-Korean”文本。

我将在“字符串”中包含“韩语”文本,并调用“matches()”我将验证该字符串。

正则表达式用于测试该文本是否为“韩语”以及韩语字符串字符长度是否在 10 到 20 等范围内。

我不想使用任何其他第三方解决方案。

提前致谢。

Men*_*ena 5

您可以为此引用 Unicode 块或脚本。

\n

这是一个带有脚本的示例:

\n
Pattern p = Pattern.compile("\\\\p{IsHangul}");\nMatcher m = p.matcher("\xea\xb9\x80\xec\x9d\xb8\xec\x9e\xac");\nwhile (m.find()) {\n    System.out.println("Found: " + m.group());\n}\n
Run Code Online (Sandbox Code Playgroud)\n

输出

\n
Found: \xea\xb9\x80\nFound: \xec\x9d\xb8\nFound: \xec\x9e\xac\n
Run Code Online (Sandbox Code Playgroud)\n

笔记

\n
    \n
  • 有关 Unicode 块的参考,请参阅此处
  • \n
  • 有关韩文机器字符的参考,请参见此处
  • \n
  • 要验证一定范围的字符数,请使用:Pattern p = Pattern.compile("\\\\p{IsHangul}{min,max}");其中min是您的最小大小,并且max是 最大大小。
  • \n
  • 您作为问题评论发布的代码将不起作用(尽管它会编译)。请在此处查找Pattern有关如何使用 Java 的参考。Matcher
  • \n
\n
\n

旧版 Android 版本(9 或更低版本)的注意事项

\n
    \n
  • 看来这种方法不适用于 Android < 10,甚至可能导致运行时崩溃。
  • \n
  • 不会在这里测试或添加替代方案
  • \n
  • 具体的原理可能隐藏在此处或链接页面中的某个地方
  • \n
  • 感谢NoHarmDan的提醒
  • \n
\n