正则表达式验证 - 显示违规字符。 javax.validation

时间:2011-04-07 13:27:40

标签: java regex validation

JSR-303(javax.validation)中有正则表达式验证。例如:

@Pattern(regexp="[\w_\\.]+")
private String username;

当值无效(与正则表达式不匹配)时显示的默认消息类似于“必须匹配{regex}”。但是用户并不了解正则表达式,所以向他们展示它是无关紧要的。一个选项是只显示“用户名包含非法字符”,在大多数情况下它可能会很好。但是,显示哪个角色出错是件好事。

这不能用正则表达式直接实现 - 它匹配与否。您必须定义其他错过某些组件的模式,或者尝试从字符串中删除字符直到匹配,然后将这些字符显示给用户。

总的来说。另一个问题是如何使用javax.validation实现此目的。

所以,总结一下这个问题:

如何使用javax.validation显示有问题的字符,以便消息看起来像“字符?,*和$是非法的”

1 个答案:

答案 0 :(得分:2)

我会使用验证模式的否定版本。所以你的模式就是:

[^\w_\\.]

在验证失败时,将其与输入字符串匹配并将结果输出给用户。