- 使用方法:
使用string.match(reg)
匹配到不符合规则的值会返回会NULL
// 初始化表单数据
this.mainForm = this.fb.group({
id: [null, [Validators.required,this.contentValidators(/^[a-zA-Z0-9_]{1,}$/)]]
});
/**
* 输入字符内容检验
*/
private contentValidators(reg: RegExp) {
const contentValidator = (control: FormControl): { [s: string]: boolean } => {
if (control.value && !control.value.match(reg)) {
return {matchErr: true, error: true};
} else {
return {};
}
};
return contentValidator;
}
- 正则匹配规则
1.仅支持字母数字下划线
/^[a-zA-Z0-9_]{1,}$/
2.正整数
/^[1-9]\d*$/
3.输入的字母数字长度限制在 6-7
/^[A-Za-z0-9]{6,7}$/
4.大于等于0, 小于等于150, 支持小数位出现5, 如145.5
/^150$|^(?:\d|[1-9]\d|1[0-4]\d)(?:.5)?$/
5.24小时制时间(HH:mm:ss)
/^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$/
6.12小时制时间(hh:mm:ss)
/^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$/
7.数字/货币金额(支持负数、千分位分隔符)
/(?:^[-]?[1-9]\d{0,2}(?:$|(?:,\d{3})*(?:$|(\.\d{1,2}$))))|(?:(?:^[0](\.\d{1,2})?)|(?:^[-][0]\.\d{1,2}))$/
不支持千分位分隔符
/(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/
8.中国手机号
/^(?:(?:\+|00)86)?1\d{10}$/
9.日期
/^\d{4}(-)(1[0-2]|0?\d)\1([0-2]\d|\d|30|31)$/
10.邮箱地址(email)
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
11.密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/