用于验证全名的Java Regex仅允许空格和字母

ama*_*mal 32 java regex validation

我希望正则表达式只验证字母和空格.基本上这是验证全名.例如:史蒂夫柯林斯先生或史蒂夫柯林斯 我试过这个正则表达式."[1 - ZA-Z] + \.?" 但没有工作.有人可以帮助我,请使用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();

}
Run Code Online (Sandbox Code Playgroud)

ste*_*ema 84

关于什么:

  • 彼得·穆勒
  • 弗朗索瓦·奥朗德
  • 帕特里克奥布莱恩
  • Silvana Koch-Mehrin

验证名称是一个难题,因为有效名称不仅包含字母AZ.

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

String regx = "^[\\p{L} .'-]+$";
Run Code Online (Sandbox Code Playgroud)

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

  • (基于stema的答案)这个怎么样:`"^\pL + [\ pL\pZ\pP] {0,}"``现在所有的破折号,点和空格也都在unicode中 (6认同)

Rah*_*san 14

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

"^[A-Za-z\s]{1,}[\.]{0,1}[A-Za-z\s]{0,}$" //regular
"^\pL+[\pL\pZ\pP]{0,}$" //unicode
Run Code Online (Sandbox Code Playgroud)

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


小智 12

对于那些使用java/android并努力解决这个问题的人来说:

"^\\p{L}+[\\p{L}\\p{Z}\\p{P}]{0,}"
Run Code Online (Sandbox Code Playgroud)

这适用于像

  • JoséBrasão


小智 5

您甚至可以尝试使用此表达式^[a-zA-Z\\s]*$来检查仅包含字母和空格的字符串(没有别的).

对我来说它有效.希望它也适合你.

或者通过这段代码:

    CharSequence inputStr = expression;
    Pattern pattern = Pattern.compile(new String ("^[a-zA-Z\\s]*$"));
    Matcher matcher = pattern.matcher(inputStr);
    if(matcher.matches())
    {
         //if pattern matches
    }
    else
    {
         //if pattern does not matches
    }
Run Code Online (Sandbox Code Playgroud)


jey*_*jey 5

请试试这个正则表达式(只允许字母和空格)

“[a-zA-Z][a-zA-Z]*”

如果你想要它用于 IOS 那么

NSString *yourstring = @"hello";

NSString *Regex = @"[a-zA-Z][a-zA-Z ]*";
NSPredicate *TestResult = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",Regex];

if ([TestResult evaluateWithObject:yourstring] == true)
{
    // validation passed
}
else
{
    // invalid name
}
Run Code Online (Sandbox Code Playgroud)