如果字符串包含字母(包括重音)、连字符、撇号和单个空格以外的字符,我将如何创建一个返回 false 的表达式?饶了我吧,“Влади́мир Пу́тин 和豊田章男呢?”。我意识到试图确定什么是名字什么不是名字是愚蠢的,但这仅用于教育目的。
另外,英文名称中还有其他常见的符号吗?
你可以试试这个:
private static final Pattern namePattern =
Pattern.compile("^[-' \\p{L}\\p{M}]+$");
public static boolean isValidName(String text) {
return namePattern.matcher(text).matches()
&& text.indexOf(" ") < 0
&& !text.startsWith(" ") && !text.endsWith(" ");
}
一个简单的谷歌搜索将为您提供带有过滤器的 java regex 表达式,如您所愿。但是,如果您的问题是要知道过滤器功能中应该包含哪些条件才能获得有效名称,那么这里有一个很好的讨论,人们姓名的所有允许字符是什么?