正则表达式Espression用于名字验证

clo*_*her 1 java regex validation spring spring-mvc

我有一个Spring MVC应用程序,在我的页面中我有一个输入字段,用户写下他/她的名字,我想避免他们键入charatcters,如@,?,!,, $,%..等.

在我的验证器中,我想使用一个允许最大字符集的表达式,例如撇号,重音符号等.

 @Override
public void validate(Object target, Errors errors)
{
    //the email must be unique
    super.validate(target, errors); 

    User user= (User) target;

    if (!user.matches("[a-zA-Z ]"))) {
        errors.rejectValue("user.name", "user.name.invalid");
    }

} 
Run Code Online (Sandbox Code Playgroud)

有没有人可以帮助我添加比[a-zA-Z]更广泛的验证?

Uwe*_*ner 5

在你的情况下,最容易定义一个"黑名单"而不是"白名单",如你所知,你不想在字符串中有什么,但不完全知道,你需要容忍什么.正如@AntonH建议的那样,你应该检查一下

[^@ ?!\,$%]+
Run Code Online (Sandbox Code Playgroud)

而不是字符和范围的巨大且可能不完整的"白名单".这意味着"一个长度为一个或多个的字符串,不包含任何指定的字符.

  • 然后通过不在黑名单中定义它来允许它.与将其添加到白名单相比,这更容易,更易读. (2认同)