java - 用于名字验证的正则表达式

标签 java regex spring validation spring-mvc

我有一个 Spring MVC 应用程序,在我的页面中我有一个输入字段,用户可以在其中输入他/她的名字,我想避免他们输入像 @, ? ,!,,$,%..等等。

在我的 validator 中,我想使用允许最大字符集的表达式,例如撇号、重音符号等。

 @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");
    }

} 

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

最佳答案

在您的情况下,定义“黑名单”而不是“白名单”是最简单的,如您所知,您不想在字符串中包含什么,但不太清楚,您需要容忍什么. 正如@AntonH 建议的那样,您应该检查

[^@ ?!\,$%]+

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

关于java - 用于名字验证的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23129265/

相关文章:

java - 按给定因子缩放线段

java - 测试两个客户端直接连接相同的IP和端口

java - Spring Web 服务不会读取 JSON

java - Spring data JPA 将 unsigned BIGINT 转换为 Long 而不是 BigInteger

java - 将 JTabbedPane 添加到 JTabbedPane 错误

java - 暂时禁用 System.out

c# - 为什么 Regex CompileToAssembly 的性能比编译的 regex 和 Interpreted Regex 慢?

MySQL:从列中的字符串中选择单词

regex - 正则表达式 - 仅当整行包含在匹配中时才匹配

java - 使用 @SpringApplicationConfiguration 在多模块项目中运行域的测试会抛出 NoSuchBeanDefinitionException?