我需要验证该用户类型只有英文文本。 所以它可以是带有标点符号的拉丁字母。 现在我写的正则表达式如下:Hibernate @Pattern ASCII符号的正则表达式验证器
@NotEmpty
@Pattern(regexp = "^[ \\w \\d \\s \\. \\& \\+ \\- \\, \\! \\@ \\# \\$ \\% \\^ \\* \\(\\) \\; \\\\ \\/ \\| \\< \\> \\\" \\' \\? \\= \\: \\[ \\] ]*$")
private String str;
,它工作正常。
但我想想更优雅的方式:我想验证我的字符串只包含ASCII符号。我可以使用一些特殊的注释或参数吗?或者我需要为此编写自定义验证器? (你能帮我在这种情况下的例子)。
我想是这样的:
static CharsetEncoder asciiEncoder = Charset.forName("US-ASCII"); // or "ISO-8859-1" for ISO Latin 1
boolean isValid(String input) {
return asciiEncoder.canEncode(input);
}
好吧,但你知道如何通过休眠来进行验证吗? –
尝试使用我的选项2中的正则表达式模式,而不使用@Pattern中不那么长的非优雅正则表达式,您不喜欢 – NickNo