有的文章上写到其中的param name为"expression",版本问题,实测应该为regex,或regexExpression,
网上查到的资料“数据校验的时候如果是使用正则表达式需要注意2.3.16这个版本中的参数名作了修改,不是"expression",而是"regexExpression"。”
<field name="user.userLoginName">
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
<field-validator type="<span style="color:#ff0000;">regex</span>">
<param name="regex">^[\w\d_]{6,30}$</param>
<message>用户名由字母、数字或"_"组成,长度6-30位</message>
</field-validator>
</field>
源代码
public class RegexFieldValidator extends FieldValidatorSupport {
private static final Logger LOG = LoggerFactory.getLogger(RegexFieldValidator.class);
<span style="color:#ff0000;"> private String regex;</span>
<span style="color:#ff0000;">private String regexExpression;</span>
private Boolean caseSensitive = true;
。。。。。。。
</pre><pre code_snippet_id="1780114" snippet_file_name="blog_20160723_5_2533159" name="code" class="html"> public String getRegex() {
if (StringUtils.isNotEmpty(regex)) {
return regex;
} else if (StringUtils.isNotEmpty(regexExpression)) {
return (String) parse(regexExpression, String.class);
} else {
return null;
}
}
有的会加上CDATA,例如下面的
<param name="regex"><![CDATA[\d{3}-\d{3}-\d{4}]]></param>
摘自百度百科——
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。
主要是xml文件对于一些特定符号来说可能解析失败,所以加上这个比较保险,前面格式是固定的<![CDATA[]]>