sil*_*box 4 java spring hibernate-validator
我有一个简单的正则表达式,它应该只匹配字符串的最后 4 个字符中的字母和数字:
([a-zA-Z0-9]{4}$)
Run Code Online (Sandbox Code Playgroud)
它在在线测试器中完美运行,但如果我将它与字段上的休眠验证注释一起使用,则不匹配:
@NotNull
@Length(min = 4, max = 25)
@Pattern(regexp = "([a-zA-Z0-9]{4}$)")
private String test;
Run Code Online (Sandbox Code Playgroud)
例如,它为1234.5678-abC2字符串返回 false
你可以帮帮我吗?
对于未来的访问者,我会在主要 OP 评论中添加@hofan41 的回复。
您假设
@Pattern如果子字符串正则表达式匹配通过,注释将返回 true。如果它不起作用,那么您的假设可能不正确。尝试在模式字符串的开头添加.*。
以这种方式,bean 属性验证注释将如下所示:
@NotNull
@Length(min = 4, max = 25)
@Pattern(regexp = ".*([a-zA-Z0-9]{4}$)")
private String test;
Run Code Online (Sandbox Code Playgroud)
该模式与整个区域匹配,如以下PatternValidator代码所示:
public boolean isValid(CharSequence value, ConstraintValidatorContext constraintValidatorContext) {
if ( value == null ) {
return true;
}
Matcher m = pattern.matcher( value );
return m.matches();
}
Run Code Online (Sandbox Code Playgroud)
尝试将整个区域与模式进行匹配。
| 归档时间: |
|
| 查看次数: |
11948 次 |
| 最近记录: |