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显示有问题的字符,以使消息看起来像“字符?,*和$是非法的”
我会选择验证模式的否定版本。所以你的模式就是:
[^\w_\\.]
Run Code Online (Sandbox Code Playgroud)
验证失败时,将其与输入字符串进行匹配并将结果输出给用户。