日期格式
正则表达式仅用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用 ?: 放在第一个选项前来消除这种副作用。连接字符串:([-./]?)
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_-]*$/
浙公网安备 33010602011771号