如何验证全名的正则表达式?我只想要字母(没有数字)和正则表达式的空格。这是我到目前为止所做的。你能帮我修复正则表达式吗?非常感谢
public static boolean isFullname(String str) {
boolean isValid = false;
String expression = "^[a-zA-Z][ ]*$"; //I know this one is wrong for sure >,<
CharSequence inputStr = str;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
isValid = true;
}
return isValid;
}
最佳答案
这个识别名字的问题是非常以文化为中心的,它确实没有可靠工作的希望。我真的不建议这样做,因为在我所知道的地球上的任何国家/地区,都没有NO 构成人名的规范形式。我可以合法地将我的名字更改为 #&*∫Ω∆ Smith
,但这不适合任何人的算法。并不是说这个具体示例是很多人都在做的事情,而是很多人在考虑数据输入时不会跳出 ASCII 表来思考,这会导致问题。
您可以反对这种情况发生的可能性,但在全局化的世界中,您的所有用户的名字都采用英文音译拼写的可能性越来越小。您也很有可能拥有来自没有名字/姓氏概念的文化的用户。不要假设,即使您的应用程序仅在特定国家/地区运行,您的某些用户也不会来自其他地方(人们一直在从一个国家移动到另一个国家,其中一些人可能想使用您的软件)。
保护您的应用程序免受此类字段的 SQL 注入(inject)(如果您将这些字段存储在数据库中),并保留它。
关于Java - 全名的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362567/