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

2022-09-01 01:41:30

我希望正则表达式仅验证字母和空格。基本上,这是为了验证全名。例如:史蒂夫·柯林斯先生或史蒂夫·柯林斯 我尝试了这个正则表达式。“[a-zA-Z]+\.?”但没有奏效。有人可以帮助我吗?请p.s.我使用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();

}

答案 1

怎么样:

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

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

至少应该对字母使用 Unicode 属性,并添加更多特殊字符。第一种方法可以是例如:

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

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


答案 2

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

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

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