经常用的校验

219 阅读1分钟

今天不知道写一些什么东西,因为最近在做一些校验等,且又周一了。

由于我是前端仔,所以是经常有一些表单校验。我经常用的就是正则匹配,用的是test和match。

test

Reg.test(str)
Reg为正则对象,test为它的方法,str为要检验的字符串。

match

str.match(Reg)
match() 方法可在字符串内搜索指定的值。它和test的用法恰好相反,但它不匹配时返回null,匹配时返回

check.png 可以看到它返回的是一个数组,第0个是匹配到的文本,而其它的元素是与正则表达式的子表达式匹配的文本。
除了这些常规的数组元素之外,返回的数组还含有3个对象属性。index属性声明的是匹配文本的起始字符在str中的位置,input属性声明的是对str的引用,这里请教路过的大佬,这个groups是什么?

下面是我常用的校验
const checkNull = (val) => { //非空校验
    if (val.trim(val).length == 0) {
            return false;
    } else {
            return true;
    }
}
const checkPhone = (val) => { //手机号校验
    let reg = /^1[3456789][0-9]{9}$/;
    return reg.test(val);
}
const checkId = (val) => { //身份证校验
    let reg = /(^\d{15}&)|(^\d{18})|(^\d{17}(\d|X|x)$)/;
    return reg.test(val);
}
const checkEnglish = (val) => { //英文校验
    let reg = /(^[a-zA-Z]+$)/;
    console.log(val.match(reg));
    if (val.match(reg) == null) {
            return false;
    } else {
            return true;
    }
}
const checkNumber = (val) => { //数字校验
    let reg = /^[0-9]*$/;
    return val.match(reg);
}
const checkDecimal = (val) => { //小数校验
    let reg = /^[0-9]+(.[0-9]{1,3})?$/;
    return val.match(reg);
}
const checkMail = (val) => { //邮箱校验
    let reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
    return val.match(reg);
}
const checkURL = (val) => { //校验url是否合法
    let reg = /^(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 val.match(reg);
}