SpreadJS中支持跟Excel一样的数据验证用来校验输入数据的正确性。而正则表达式是在日常开发中经常用的校验手段。Excel本身不支持数据验证时设置一个正则表达式来进行校验。但是SpreadJS具有高度灵活的优点,通过相应的扩展可以实现使用正则表达式来进行数据验证。接下来我们将一步一步实现这样的操作:在设置之前我们首先要在代码中重写条件格式的相关条件设置,代码如下:
创建一个用于正则校验的条件格式原型,原型继承GC.Spread.Sheets.ConditionalFormatting.Condition,之后重写evaluate方法。
function MyCondition (reg){this.reg = reg;GC.Spread.Sheets.ConditionalFormatting.Condition.apply(this, arguments);}MyCondition.prototype = new GC.Spread.Sheets.ConditionalFormatting.Condition();MyCondition.prototype.evaluate = function (evaluator, baseRow, baseColumn, actualObj) {var reg = new RegExp(this.reg);if (reg.test(actualObj)) {return true;}else{return false;}};
SpreadJS数据验证支持DefaultDataValidator这种默认数据验证,创建时需要添加一个条件规则。这里的条件规则中我们就可以传入验证的正则表达式。代码如下所示:
首先,我们创建一个条件规则,并将正则表达式当做参数传入。
var nCondition = new MyCondition("^[0-9]*[1-9][0-9]*$");
示例中我们的正则验证的是可以包含0开头但不能为0的一串数字。接下来创建一个DefaultDataValidator默认数据验证,并将上一步生成的条件规则对象传入。
var validator = new GC.Spread.Sheets.DataValidation.DefaultDataValidator(nCondition);
之后,设置数据验证的类型为GC.Spread.Sheets.DataValidation.CriteriaType.custom 即自定义类型。
validator.type(GC.Spread.Sheets.DataValidation.CriteriaType.custom);
这样就完成了正则数据验证的创建。最后我们仍然通过设置数据验证的setDataValidator方法进行数据验证的设置,效果如下:
当我们在单元格中输入000时,验证出错:

输入010时,验证成功:

SpreadJS | 下载试用
如果您对我们的产品还有任何疑问,欢迎咨询在线客服>>
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!