一、数值校验
/**
- 数值校验(整数/浮点, 包括 0 )
-
- 不区分数字还是字符串,如 1.23 和 '1.23' 都可以校验通过
- @param {number} m 整数部分最大位数,默认 9
- @param {number} n 小数部分最大位数,默认 2
- @param {boolean} strict 是否严格模式(默认false),严格模式下,小数位数必须严格是 n 位 */
const numRegFn = (m = 9, n = 2, strict = false) => {
if (m <= 0 || n < 0) {
console.log('m 需 >= 0, n 需 >0')
return
}
if (n === 0) {
return new RegExp(`^[0-9]{1,${m}}$`) // 整数
}
if (strict) {
return new RegExp(`^[0-9]{1,${m}}(\\.\\d{${n}})$`)
} else {
return new RegExp(`^[0-9]{1,${m}}$|^[0-9]{1,${m}}(\\.\\d{1,${n}})?$`)
}
}
二、字符串校验
/**
-
- 不能是纯数字,如 '12345' 无法校验通过
-
- 不能包含汉字
- @param {number} minLen 最小长度限制,默认 1
- @param {number|Infinity} maxLen 最大长度限制,默认不限制
- @param {boolean} pure 是否只包含字母(即a-zA-Z),默认 false。若为 true,将包含字母和数字
- @returns 默认 /^[0-9a-zA-Z]{1,}$/ */
const strRegFn = (minLen = 1, maxLen = Infinity, pure = false) => {
if (minLen < 1 || minLen > maxLen) {
console.log('参数错误')
return false
}
const range = maxLen && maxLen !== Infinity ? `{1,${maxLen}}` : '{1,}'
if (pure) {
return new RegExp(`^[a-zA-Z]${range}$`)
} else {
return new RegExp(`^(?=.*[a-zA-Z])[A-Za-z0-9 _]${range}$`)
}
}
...静待更新