Java unicode 名称正则表达式

Java unicode name regexp

我想使用 java 正则表达式检查用户名和姓氏。 我用这个模式

private static final Pattern CHECK_NAME_FIELD_PATTERN = Pattern.compile("\w+",
        Pattern.UNICODE_CHARACTER_CLASS);

public static boolean checkNameField(String name){
    return CHECK_NAME_FIELD_PATTERN.matcher(name).matches();
}

但是 checkNameField("234523") returns 正确。

它 returns 对于数字是正确的,因为 \w 也会匹配数字。

private static final Pattern CHECK_NAME_FIELD_PATTERN = Pattern.compile("\p{L}+",
    Pattern.UNICODE_CHARACTER_CLASS);

\p{L} 匹配来自任何语言的任何类型的字母。