【发布时间】:2012-03-18 23:34:08
【问题描述】:
我有一个本地化的输入字段。我需要使用正则表达式添加验证,它必须只接受字母和数字。如果我只使用英语,我可以使用[a-z0-9]。
到目前为止,我正在使用方法Character.isLetterOrDigit(name.charAt(i))(是的,我正在遍历每个字符)来过滤掉各种语言中存在的字母。
有没有更好的方法?有任何可用的正则表达式或其他库吗?
【问题讨论】:
-
所以你也想处理英语以外的语言,对吧?
-
根据this 的帖子,
\w也适用于 perl 的 unicode 字符正则表达式,我不知道在 java 正则表达式中是否如此。 -
@beerbajay 这不再完全正确,它仍然是标准,但
Pattern.UNICODE_CHARACTER_CLASS启用了预定义字符类和 POSIX 字符类的 Unicode 版本。 -
@ManuPK 请注意,在 Java 中使用
charAt总是错误的。你应该打电话给codePointAt,并相应地调整你的i。 -
我必须指出您使用了“字母”一词。我相信,你真正的意思是脚本。顺便提一句。请注意,答案中提到的正则表达式会捕获所有数字,包括Roman Numerals。您可能还想了解Unicode Regular Expressions。
标签: java regex unicode localization