当前位置: 首页 > 面试题库 >

正则表达式,用于验证本地化字符串中的字母和数字

陶涵育
2023-03-14
问题内容

我有一个 本地化 的输入字段。我需要使用正则表达式添加一个验证,该验证必须只包含字母和数字。[a-z0-9]如果我只使用英语,我本可以使用。

到目前为止,我正在使用该方法Character.isLetterOrDigit(name.charAt(i))(是的,我正在遍历每个字符)来过滤出各种语言中存在的字母。

有更好的方法吗?任何正则表达式或其他可用的库吗?


问题答案:

从Java 7开始,您可以使用 Pattern.UNICODE_CHARACTER_CLASS

String s = "Müller";

Pattern p = Pattern.compile("^\\w+$", Pattern.UNICODE_CHARACTER_CLASS);
Matcher m = p.matcher(s);
if (m.find()) {
    System.out.println(m.group());
} else {
    System.out.println("not found");
}

如果没有该选项,它将无法识别“Müller”一词,但会使用 Pattern.UNICODE_CHARACTER_CLASS

启用Unicode版本的预定义字符类和POSIX字符类。

详情请看这里

您还可以在这里查看
Java
7中的更多Unicode信息。

并在regular-expression.info上对Unicode脚本,属性和块进行了概述。

在这里可以看到来自tchrist的一个著名的答案,有关Java的正则表达式的警告,包括Java7的最新更新(将在Java 8中更新)。



 类似资料:
  • 问题内容: 我想要一个只接受数字和点的Java正则表达式。 例如, 点不应位于开始位置或结束位置。 问题答案: 我想这就是你想要的: 说明:接受以点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;一个不带点的数字也可以接受。 没有多个数字的变体: 需要至少一个点的变体: 不要忘记在Java中必须转义\符号,因此代码如下所示:

  • 我需要允许字段使用字母数字和某些其他字符。我正在使用这个正则表达式: 允许的特殊字符是 “_”。我做错了什么?

  • 我试图构建一个正则表达式来匹配这些字符串: jfldfldf ldjfdlf ldfl ldfldf 8998 dfjldjf 89dfdf DF899 ljdljf[dff]DFDFDF(fdfdf)898 要求: 字符串应仅以任何小写或大写字符(A-Z)开头 它可能包含空格或括号() 不允许任何其他特殊字符 我尝试了,但它仍然接受其他特殊字符。

  • 其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。

  • 关于正则表达式有很多类似的问题,但我仍然对以下情况感到困惑:

  • 问题内容: 我有日期主要集中在形式和。我想模式匹配。 为此目的编写正则表达式很简单吗?我是regex的新手,所以不胜感激任何资源达标可以使我快速入门吗? 问题答案: 如果您试图在字符串中查找这些日期符号,那么正则表达式确实是一个不错的选择。您可以使用此正则表达式: 在此处查看实际操作:http : //rubular.com/r/qZOTsUikbo。注意:这也匹配“ 日期 ” 。如果这对您来说是