常用工具函数 (正则表达式篇)

121 阅读1分钟

校验经度

export function validateLng(str) {
    const reg = /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,6})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/
    return reg.test(str)
}

校验纬度

export function validateLat(str) {
    const reg = /^(\-|\+)?([0-8]?\d{1}\.\d{0,6}|90\.0{0,6}|[0-8]?\d{1}|90)$/
    return reg.test(str)
}

身份证号码

export function validateCard(str) {
    const reg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/
    return reg.test(str)
}

合法url

export function validateURL(textval) {
    const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
    return urlregex.test(textval)
}

小写字母

export function validateLowerCase(str) {
    const reg = /^[a-z]+$/
    return reg.test(str)
}

大写字母

export function validateUpperCase(str) {
    const reg = /^[A-Z]+$/
    return reg.test(str)
}

大小写字母

export function validateAlphabets(str) {
    const reg = /^[A-Za-z]+$/
    return reg.test(str)
}

Email

export function validateEmail(str) {
    const reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
    let obj = {
        boolean: true,
        msg: ''
    }
    obj.boolean = reg.test(str)
    obj.msg = '请填写正确的邮箱地址'
    return obj
}

手机号码

export function validateMobile(str) {
    const reg = /^1[3456789]\d{9}$/
    let obj = {
        boolean: true,
        msg: ''
    }
    obj.boolean = reg.test(str)
    obj.msg = '请填写正确的电话号码'
    return obj
}

export function validateMobileorPhone(str) {
    const reg = /^(\+?86)1[3456789]\d{9}$/
    let obj = {
        boolean: true,
        msg: ''
    }
    const regtel = /^[(](0\d{2,3}[)]\d{7,8})$/
    obj.boolean = reg.test(str) || regtel.test(str)
    obj.msg = '请填写正确的联系电话'
    return obj
}

电话号码(区号-号码)

export function validatePhone(str) {
    const reg = /^[\d\-]+$/
    let obj = {
        boolean: true,
        msg: ''
    }
    obj.boolean = reg.test(str)
    obj.msg = '请填写正确的联系电话'
    return obj
}

邮政编码

export function validatePostCode(str) {
    const reg = /^[0-9][0-9]{5}$/
    let obj = {
        boolean: true,
        msg: ''
    }
    obj.boolean = reg.test(str)
    obj.msg = '请填写正确的邮政编码'
    return obj
}

非空校验

export function validateNull(str1, str2) {
    const reg = str1.length
    let obj = {
        boolean: true,
        msg: ''
    }
    if (reg === 0) {
        obj.boolean = false
        obj.msg = '请填写完整信息'
    }
    return obj
}

角色名校验

export function validateRoleName(str) {
    const reg = /^[\u4E00-\u9FA50-9a-zA-Z@._]+$/
    let obj = {
        boolean: true,
        msg: ''
    }
    obj.boolean = reg.test(str)
    obj.msg = '角色名由 字母、数字、汉字、@、.、_ 组成'
    return obj
}

密码校验

export function validatePassword(str) {
    let obj = {
        boolean: false,
        msg: ''
    }
    const scReg = /['";:& ]/im
    if (scReg.test(str)) {
        obj.msg = '密码不能包含单引号,双引号,分号,&,冒号,空格这6个特殊字符'
        return obj
    }
    if (str.length < 8 || str.length > 32) {
        obj.msg = '密码长度为8-32个字符'
        return obj
    }
    if (/(\w)\1{6,}/.test(str)) {
        obj.msg = '密码重复字符连续不能超过6次'
        return obj
    }
    if (weakCipher.includes(str)) {
        obj.msg = '当前密码为弱密码,不能设置此密码,请重新输入密码'
        obj.check = true
        return obj
    }
    const num = /\d/.test(str)
    const little = /[a-z]/.test(str)
    const cap = /[A-Z]/.test(str)
    const sc = /\W/.test(str)
    const valid =
        (num && !little && !cap && !sc) ||
        (!num && little && !cap && !sc) ||
        (!num && !little && cap && !sc) ||
        (!num && !little && !cap && sc) ||
        (!num && little && cap && !sc)
    if (valid) {
        obj.msg = '密码必须包含英文字母、数字和特殊字符中的两种及以上'
        return obj
    }
    const reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{8,32}$/
    obj.boolean = reg.test(str)
    obj.msg = '密码长度不能小于8位或超过32位,至少包含字母、数字和特殊符号中两种!'
    return obj
}

确认密码校验

export function validateConfirmPassword(str1, str2) {
    let obj = {
        boolean: true,
        msg: ''
    }
    if (!(str1 === str2)) {
        obj.boolean = false
        obj.msg = '确认密码与密码不一致'
    }
    return obj
}

传真号码


export function validateFax(str) {
    const reg = /\d/
    let obj = {
        boolean: true,
        msg: ''
    }
    obj.boolean = reg.test(str)
    obj.msg = '请填写正确的传真'
    return obj
}