Validation 验证假名输入

Validation 验证假名输入,validation,language-agnostic,unicode,cjk,Validation,Language Agnostic,Unicode,Cjk,我正在开发一个允许用户输入日语字符的应用程序。我试图找到一种方法来确定用户的输入是否是日语假名(平假名、片假名或汉字) 在应用程序中有一些字段输入拉丁文本是不合适的,我需要一种方法将某些字段限制为仅使用汉字或片假名,等等 该项目使用UTF-8编码。我不希望接受JIS或Shift JIS输入 想法?不确定是否有一个完美的答案,但维基百科上列出了和的Unicode范围。(我希望也可以从中获得。) 平假名:Unicode:3040-309F 片假名:Unicode:30A0–30FF 根据输入检查

我正在开发一个允许用户输入日语字符的应用程序。我试图找到一种方法来确定用户的输入是否是日语假名(平假名、片假名或汉字)

在应用程序中有一些字段输入拉丁文本是不合适的,我需要一种方法将某些字段限制为仅使用汉字或片假名,等等

该项目使用UTF-8编码。我不希望接受JIS或Shift JIS输入


想法?

不确定是否有一个完美的答案,但维基百科上列出了和的Unicode范围。(我希望也可以从中获得。)

  • 平假名:Unicode:3040-309F
  • 片假名:Unicode:30A0–30FF
根据输入检查这些范围应作为对Unicode的平假名或片假名的验证,其方式与语言无关

对于汉字,我希望它会更复杂一点,就像我所说的那样
希望中文和日文中使用的汉字都包含在同一范围内,但我可能还是错了。(我不能期望简体中文和繁体中文包含在同一范围内…

听起来您基本上只需要检查每个Unicode字符是否在特定范围内。这应该是一个很好的起点


如果您使用的是.NET,我的库有一些Unicode范围的支持—它是基本的,但应该可以完成这项工作。我现在手头没有资料,但如果有帮助的话,稍后会用一个例子更新这篇文章。

哦!我曾经有过这个。。。我用平假名,片假名和汉字做了一个正则表达式。我忘了确切的密码,我去看看

regex很好,因为你把问题翻了一番。我用PHP实现了这一点,这是我选择的超强自动生成问题的工具

--编辑--

我找到了这个,但不太好。。。我会继续找的

--编辑--
我查看了我的便携式硬盘。。。。我以为我保留了上一家公司的那一段信息。。。很抱歉。

Jon,你手头不会有源代码吧?@Zack:按照链接,你可以下载它:)我以前对kanjis使用相同的范围(4E00~9FAF),但在unicode图表中检查了它,发现整个范围有点大:4E00~9FFF。不过,它可能包含日语中不再使用的字符。在源文件中写入日语字符是一种糟糕的做法。
$pattern = '/[^\wぁ-ゔァ-ヺー\x{4E00}-\x{9FAF}_\-]+/u';