Java - 全名的正则表达式

标签 java regex string validation matcher

如何验证全名的正则表达式?我只想要字母(没有数字)和正则表达式的空格。这是我到目前为止所做的。你能帮我修复正则表达式吗?非常感谢

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/

相关文章:

java - android 2.3 中的通知生成器

多种对象类型的 JavaFX TreeView? (和更多)

python - 从字符串列表中提取列匹配中所有匹配的更快方法

c - 使用指针在c中交换字符串

C - 字符串递归

java - 如何在 Java 类中进行谷歌网页翻译

java - Android中如何设置默认浅色主题?

R - 将字母数字字符观察值与每个字母因子的列分开,每个观察值具有数字值

python - 使用 re.finditer 和 re.match 时的不同行为

c++ - 为什么 myString.at(myString.length()) 不起作用?