用于验证全名的 Java 正则表达式仅允许空格和字母

新手上路,请多包涵

我希望正则表达式仅验证字母和空格。基本上这是为了验证全名。例如: Steve Collins 先生或 Steve Collins 我试过这个正则表达式。 “[a-zA-Z]+\.?”但是没有用。有人可以帮助我吗 ps 我使用 Java。

 public static boolean validateLetters(String txt) {

    String regx = "[a-zA-Z]+\\.?";
    Pattern pattern = Pattern.compile(regx,Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(txt);
    return matcher.find();

}

原文由 amal 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 511
2 个回答

关于什么:

  • 彼得穆勒
  • 弗朗索瓦·奥朗德
  • 帕特里克·奥布莱恩
  • 西尔瓦娜·科赫-梅林

验证名称是一个难题,因为有效名称不仅由字母 AZ 组成。

至少您应该为字母使用 Unicode 属性并添加更多特殊字符。第一种方法可能是:

 String regx = "^[\\p{L} .'-]+$";

\\p{L} 是一个 Unicode 字符属性,匹配任何语言的任何类型的字母

原文由 stema 发布,翻译遵循 CC BY-SA 3.0 许可协议

试试这个正则表达式(允许字母、点、空格):

 "^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode

这也将确保 DOT 永远不会出现在名称的开头。

原文由 Raheel Hasan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题