正则表达式验证-显示令人反感的字符。javax.validation

Boz*_*zho 5 java regex validation

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

@Pattern(regexp="[\w_\\.]+")
private String username;
Run Code Online (Sandbox Code Playgroud)

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

使用正则表达式无法直接实现-它匹配还是不匹配。您必须定义缺少某些组件的其他模式,或者尝试从字符串中删除字符直到匹配为止,然后将这些字符显示给用户。

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

因此,总结一下问题:

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

Jus*_*gan 3

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

[^\w_\\.]
Run Code Online (Sandbox Code Playgroud)

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