日期格式

正则表达式仅用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用 ?: 放在第一个选项前来消除这种副作用。连接字符串:([-./]?)
import { ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms';
import { Util } from '@lib/util';

export function dateValidator(): ValidatorFn {
  // ([-./]?)  日期中间的连接字符:匹配0次或1次
  const reg =/^(?:(?!0000)[0-9]{4}([-./]?)(?:(?:0[1-9]|1[0-2])([-./]?)(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])([-./]?)(?:29|30)|(?:0[13578]|1[02])([-./]?)31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-./]?)02([-./]?)29)$/;
return (control: AbstractControl): ValidationErrors | null => {
    const v: string = control.value;
    if (!Util.isNullOrWhiteSpace(v)) {
      if (!v.match(reg)) {
        return { dateError: true };
      } else {
        if ( v.length !== 8 && v.length !== 10) {
          return { dateError: true };
        } else {
          return null;
        }
      }
    } else {
      return null;
    }
  };
}

 

数据库表名

不能输入纯数字或除英文、下划线和数字外其他字符
/^(?!\d+$)[a-zA-Z0-9-_]+$/
/^[A-Za-z0-9_-]*[A-Za-z_-][A-Za-z0-9_-]*$/

 

posted on 2021-05-18 16:07  哈哈哈~_~  阅读(471)  评论(0)    收藏  举报