报表知识库
我要提问

灵活的填报表校验–使用正则表达式校验

有时候我们需要制作类似个人信息录入这样的填报表格,上面需要填写的单元格非常多,包括姓名、年龄、住址、电话、email、还有个人简介等等。为了保证信息准确无误的入库,需要加校验以保证数据类型和格式的正确。润乾报表提供了灵活的校验方式来满足多种多样的校验需求,如 通过设置单元格的填报数据类型、在填报属性的数据校验里写校验公式、自定义合法性校验函数等校验方法。本文将通过一个小例子介绍一下在润乾报表中如何在填报属性的数据校验里写正则表达式实现校验功能。

例如:建立好一个填报表,数据源选demo的中的订单表,数据字段选上订单ID、货主名称、货主地区、货主邮政编码和运货费,现在需要给D2单元格即邮政编码格式设置合法性校验,校验输入邮编格式是否正确,所谓正确就是邮编全为数字,不能有其他字符,而且长度需为6位,首位不为0。

操作如下图

tbsx.png

在弹出的”数据填报”对话框中选择”校验”标签页,添加校验表达式,如下图

ybbzq.PNG

注意: 在添加自定义校验表达式时,如果勾选”是否立即校验”复选框,表示在页面填写数据时,当鼠标移开当前单元格时就立即进行合法性检查,否则,在点击提交按钮时才进行合法性检查。

在发布后报表的页面中,当在邮政编码位置输入非数字的字符,或者输入的字符长度大于或小于6位时,都会弹出输入数据不合法的提示信息,如下图

yb_xg.png

这样就实现了在润乾报表中使用正则表达式来校验数据的格式是否合法。

下面列举几种常见的正则表达式

检查手机号是否合法:/^1(3\d|5[36789])\d{8}$/

说明:手机号共11位,第一位为1,第二位为3或者5,当第二位为5的时候,第三位只能是36789中的一个

检查中文名是否合法:/^[\u4e00-\u9fa5]+$/

说明:若不是中文或中文的前后有空格,都认为是不合法的

检查 html 标记是否匹配:/<(.*)>.*<\/\1>|<(.*) \/>/

说明:如若只出现<html> 而无对应的</html>,则检验结果是html 标记不匹配

检查URL格式是否合法:”[a-zA-z]+://[^\s]*”

说明:URL合法格式应该以字母连接:// 开头

检查IP格式是否合法:/(\d+)\.(\d+)\.(\d+)\.(\d+)/

说明:IP的格式是点分十进制格式,例如:192.168.0.66 就是正确IP

检查账号是否合法:/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/

说明:账号字母开头,其他位可以有大小写字母、数字、下划线,允许5-16字节

检查QQ号是否合法:/^\s*[.0-9]{5,10}\s*$/

说明:QQ号码必须是数字,最长10位

检查邮编是否合法:/^[1-9]\d{5}$/

说明:邮编首位不为0,长度是6位的数字

检查身份证号是否合法:/(^\d{15}$)|(^\d{17}([0-9]|X)$)/

说明:身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X

注意:

1.一般来说,写在可扩展单元格中的校验,会随着单元格的扩展而被复制,写在不可扩展单元格,则不会被复制,即使用D2.toString().match()方法,只是对单元格D2本身的正确性进行校验,当D2为扩展单元格时,需要使用符号”${}”,即用${D2}.toString().match(),才能对所有扩展格都进行校验;

2.当被校验的数据类型是非字符串的时候,可使用.toString()方法先将其转换成字符串后再进行校验。
引自:润乾报表知识库
相关文章:可输入的下拉框数据库驱动不一致引起的问题;如何实现细粒度的填报表单权限控制——控制到每个单元格是否可写;利用oracle中的序列巧解并发流水号问题