123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- const strategies = {
- // errorMsg参数,提升了适用性
- isNoEmpty: function (value, errorMsg) { //不为空
- if (value === '' || value === undefined || value === false || JSON.stringify(value) === '[]' || JSON.stringify(value) === '{}') {
- // 返回字符串true 错误信息
- return errorMsg;
- }
- },
- minLength: function (value, length, errorMsg) { //限制最小长度
- if (value.length < length) {
- return errorMsg;
- }
- },
- maxLength: function (value, length, errorMsg) { //限制最小长度
- if (value.length > length) {
- return errorMsg;
- }
- },
- isMobile: function (value, errorMsg) {
- if (!/^([0-9]{11})$/.test(value)) { //电话号码校验
- return errorMsg;
- }
- },
- isWx: function (value, errorMsg) {
- if (!/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test(value)) { //微信码校验
- return errorMsg;
- }
- },
- isEmail: function (value, errorMsg) {
- if (!/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(value)) { //邮箱校验
- return errorMsg;
- }
- },
- money: function (value, errorMsg) {
- if (!/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/.test(value) || parseFloat(value) < 0.01) { //金额校验
- return errorMsg;
- }
- },
- name: function (value, errorMsg) {
- if (!/^[u4e00-u9fa5·0-9A-z]+$/.test(value)) { //金额校验
- return errorMsg;
- }
- },
- isUrl:function(value,errorMsg){
- if(value.indexOf('http') < 0){
- return errorMsg;
- }
- },
- // isUrl(value, errorMsg) {
- // if (!/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/.test(value)) {
- // return errorMsg;
- // }
- // }
- };
- class Validate {
- constructor() {
- this.cache = []
- }
- }
- Validate.prototype.add = function (value, rule, errorMsg) {
- this.cache.push(function () {
- // 规则
- let method, arr;
- //判断为已有的策略还是新增的
- if (typeof rule === 'string') {
- arr = rule.split(':');
- let strategy = arr.shift();
- method = strategies[strategy];
- } else {
- arr = [];
- method = rule;
- }
- arr.unshift(value);
- arr.push(errorMsg);
- return method.apply(null, arr);
- });
- };
- Validate.prototype.start = function () {
- for (let i = 0, validatorFunc; validatorFunc = this.cache[i++];) {
- let msg = validatorFunc();
- if (msg) {
- return msg;
- }
- }
- };
- export default Validate
|