使用函数柯里化应用在验证规则上

  1. validate.js文件中使用函数柯里化方式,生成验证规则, curryingCheck函数返回的函数是 真正的 验证函数
/**
 *  @desc 柯里化验证
 *  @param 验证规则, 返回函数的参数是待验证的字符
 *  @return fun
 */
function curryingCheck(reg) {
    return function(text) {
        return reg.test(text)
    }
}
// 手机号正则表达式
const phone = /^1\d{10}$/;
// 手机号正则表达式(强校验)
export const phoneStrong = /^(13[0-9]{9})|(15[0-9]{9})|(17[0-9]{9})|(18[0-9]{9})|(19[0-9]{9})$/;
// 固话正则表达式
const tel = /^(400|800)([0-9\\-]{7,10})|(([0-9]{4}|[0-9]{3})(-| )?)?([0-9]{7,8})((-| |转)*([0-9]{1,4}))?$/;
// 邮箱正则表达式
const email = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
// 网址正则表达式
const url = /(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/;
// 数字正则表达式
const number = /^[0-9]+\.?[0-9]*$/;
// 整数正则表达式
const digits = /^-?\d+$/;
// 日期正则表达式
const date = /^(\d{4})[-/](\d{1}|0\d{1}|1[0-2])([-/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/;
// 身份证正则表达式
const identity = /(^\d{15}$)|(^\d{17}(x|X|\d)$)/;
// 正整数正则表达式
const digitsP = /^[1-9]\d*$/;
// 负整数正则表达式
const digitsN = /^-[1-9]\d*$/;
// 非负整数(正整数或0)正则表达式
const digitsPZ = /^\d+$/;
// 非正整数(负整数或0)正则表达式
const digitsNZ = /^-[1-9]\d*|0/;
// 中文正则表达式
const chinese = /^[\u4E00-\u9FA5]{2,4}$/;
// 端口号正则表达式
const port = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;
// IP正则表达式
const ip = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
// 经度正则表达式
const longitude = /^[-|+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,5}|180\.0{1,5})$/;
// 纬度正则表达式
const latitude = /^[-|+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;
export default {
    /**
     * @desc 是否是手机号
     * @param value
     * @returns fun
     */
    isPhone: curryingCheck(phone),
    
    /**
     * @desc 是否为固话
     * @param value
     * @returns fun
     */
    isTel: curryingCheck(tel),
    
    /**
     * @desc 是否是邮箱
     * @param value
     * @returns fun
     */
    isEmail: curryingCheck(email),
    
    /**
     *  @desc 是否是网址
     * @param value
     * @returns fun
     */
    isUrl: curryingCheck(url),
    
    /**
     *  @desc 是否是数字
     *  @param value
     *  @returns fun
     */
    isNumber: curryingCheck(number),
    
    /**
     * @desc 是否是整数
     * @param value
     * @returns fun
     */
    isDigits: curryingCheck(digits),
    
    /**
     * @desc 是否是正整数
     * @param value
     * @returns fun
     */
    isDigitsP: curryingCheck(identity),
    
    /**
     * @desc 是否是负整数
     * @param value
     * @returns fun
     */
    isDigitsN: curryingCheck(digitsN),
    
    /**
     * @desc 是否是非负整数(正整数或0)
     * @param value
     * @returns fun
     */
    
    isDigitsPZ: curryingCheck(digitsPZ),
    /**
     * @desc 是否是非正整数(负整数或0)
     * @param value
     * @returns 
     */
    isDigitsNZ: curryingCheck(digitsNZ),
    
    /**
     * @desc 是否是日期
     * @param value
     * @returns fun
     */
    isDate: curryingCheck(date),
    
    /**
     * @desc 是否是身份证
     * @param value
     * @returns fun
     */
    isIdentity: curryingCheck(identity),
    
    /**
     * @desc 是否是中文
     * @param value
     * @returns fun
     */
    isChinese: curryingCheck(chinese),
    
    /**
     * @desc 是否是端口号
     * @param value
     * @returns fun
     */
    isPort: curryingCheck(port),
    
    /**
     * @desc 是否是IP
     * @param value
     * @returns fun
     */
    isIP: curryingCheck(ip),
    
    
    /**
     * @desc 是否是经度 -180.0~+180.0(整数部分为0~180,必须输入1到5位小数)
     * @param value
     * @returns fun
     */
    isLongitude: curryingCheck(longitude),
    
    
    /**
     * @desc 是否是纬度 -90.0~+90.0(整数部分为0~90,必须输入1到5位小数)
     * @param value
     * @returns fun
     */
    isLatitude: curryingCheck(latitude)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容