Skip to content

Latest commit

 

History

History
142 lines (127 loc) · 2.82 KB

常用校验规则.md

File metadata and controls

142 lines (127 loc) · 2.82 KB
title date tags
常用校验规则
2017-09-01
Javascript

前言

做项目时经常要校验输入框的字符,于是我做了整理。记录下来

/**
 * 邮箱校验,返回邮箱是否正确
 * @param str
 * @returns {boolean}
 */
export const email = (str) => {
    return /^[a-z_0-9.-]{1,64}@([a-z0-9-]{1,200}.){1,5}[a-z]{1,6}$/.test(str);
};

/**
 * 大陆手机号校验,返回手机号是否正确
 * @param str
 * @returns {boolean}
 */
export const cnPhone = (str) => {
    return /^1\d{10}$/.test(str);
};

/**
 * 金额校验,最多支持到小数点后两位
 * @param str
 * @returns {boolean}
 */
export const amount = (str) => {
    return /^\d+(\.\d{1,2})?$/.test(str);
};

/**
 * 中文校验,返回是否全中文
 * @param str
 * @returns {boolean}
 */
export const zhCn = (str) => {
    return /^[\u4e00-\u9fa5]+$/.test(str);
};

/**
 * 中文校验,返回是否存在中文
 * @param str
 * @returns {boolean}
 */
export const existZhCn = (str) => {
    return /[\u4e00-\u9fa5]/.test(str);
};

/**
 * 英文校验,返回是否全英文
 * @param str
 * @returns {boolean}
 */
export const en = (str) => {
    return /^[a-z]+$/.test(str);
};

/**
 * 英文校验,返回是否存在英文字母
 * @param str
 * @returns {boolean}
 */
export const existEn = (str) => {
    return /[a-z]/.test(str);
};

/**
 * 银行校验,返回是否正确
 * @param str
 * @returns {boolean}
 */
export const bank = (str) => {
    return /^\d{16,19}$/.test(str);
};

/**
 * 大陆身份证校验,返回是否正确
 * @param str
 * @returns {boolean}
 */
export const identity = (str) => {
    return /^\d{17}[A-Za-z0-9]$/.test(str);
};

/**
 * 数字校验,返回是否正确
 * @param str
 * @param options Object 数字位数,默认为4位
 * @returns {boolean}
 */
export const number = (str, options) => {
    if (Object.prototype.toString.call(options).match(/([A-Z][a-z]+)/g)[0].toLowerCase() === 'object') {
        return new RegExp(`^[0-9]{${options.limit}}$`).test(str);
    }
    return /^[0-9]{4}$/.test(str);
};

/**
 * 总体校验
 * @param str
 * @param type String
 * @param options Object
 * @returns {boolean}
 */
export default (str, type, options) => {
    switch ((type || '').toLowerCase()) {
        case 'amount':
            return amount(str);
        case 'bank':
            return bank(str);
        case 'identity':
            return identity(str);
        case 'cnphone':
            return cnPhone(str);
        case 'email':
            return email(str);
        case 'en':
            return en(str);
        case 'existen':
            return existEn(str);
        case 'existzhcn':
            return existZhCn(str);
        case 'number':
            return number(str, options);
        case 'zhcn':
            return zhCn(str);
        default:
            return false;
    }
};