常用正则

252 阅读1分钟
  1. 验证是否为有效数字

    /*
     * 规则分析
     * 1.可能出现 + - 号,也可能不出现  [+-]?
     * 2.一位0-9都可以,多位首位不能是0 (\d|([1-9]\d+))
     * 3.小数部分可能有可能没有,一旦有后面必须有小数点+数字 (\.\d+)?
     */
    let reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;
    
  2. 验证密码

    //=>数字、字母、下划线
    //=>6~16位
    let val = userPassInp.value,
        reg = /^\w{6,16}$/;
    let flag=reg.test(val);
    /*
    function checkPass(val){
        if(val.length<6 || val.length>16){
        	alert('长度必须介于6-16位之间!');
        	return;
    	}
        let area=['a','b'....'_']; //=>包含数字、字母、下划线
        for(let i=0;i<val.length;i++){
            let char=val[i];
            if(!area.includes(char)){
                alert('格式不正确!');
        		return;
            }
        }
    }
    */
    
  3. 验证真实姓名的

    /*
     * 1.汉字  /^[\u4E00-\u9FA5]$/
     * 2.名字长度 2~10位
     * 3.可能有译名 ·汉字  (·[\u4E00-\u9FA5]{2,10}){0,2}
     */
    let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10}){0,2}$/;
    
  4. 验证邮箱的

    let reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
    
    //=> \w+((-\w+)|(\.\w+))*
    //1.开头是数字字母下划线(1到多位)
    //2.还可以是 -数字字母下划线 或者 .数字字母下划线,整体零到多次
    //=>邮箱的名字由“数字、字母、下划线、-、.”几部分组成,但是-/.不能连续出现也不能作为开始
    
    //=> @[A-Za-z0-9]+
    //1.@后面紧跟着:数字、字母 (1-多位)
    
    //=> ((\.|-)[A-Za-z0-9]+)*
    //1.对@后面名字的补充
    // 多域名     .com.cn
    // 企业邮箱    zxt@zhufeng-peixun-office.com
    
    //=> \.[A-Za-z0-9]+
    //1. 这个匹配的是最后的域名(.com/.cn/.org/.edu/.net...)
    
  5. 身份证号码

    /*
     * 1. 一共18位
     * 2. 最后一位可能是X
     *
     * 身份证前六位:省市县  130828
     * 中间八位:年月日
     * 最后四位:
     *   最后一位 => X或者数字
     *   倒数第二位 => 偶数 女  奇数 男
     *   其余的是经过算法算出来的
     */
    //let reg = /^\d{17}(\d|X)$/;
    //=>小括号分组的第二个作用:分组捕获,不仅可以把大正则匹配的信息捕获到,还可以单独捕获到每个小分组的内容
    let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|X)$/;
    reg.exec("130828199012040617"); //=>["130828199012040617", "130828", "1990", "12", "04", "1", "7"...] 捕获结果是数组,包含每一个小分组单独获取的内容
    
  6. 手机号

    /^[1][3|4|5|6|7|8|9][0-9]{9}$/