JS面试③正则表达式

1.简单入门

        //正则表达式
        let reg1=/abc/;
        let reg2=new RegExp("abc");
        let str="cdadabcjh";
        let str1="h";
        let str2="cdadacjh";
        console.log(reg1.test(str));    //true
        console.log(reg2.test(str2));   //false
        
        let reg3=/^c/;//是否以c开头
        console.log(reg3.test(str));    //true
        
        let reg4=/h$/;//是否以h结尾
        console.log(reg4.test(str));    //true
        
        let reg5=/^h$/;//是否内容、字符个数都是h
        console.log(reg5.test(str));    //false
        console.log(reg5.test(str1));    //true
        
        let reg6=/s*/;//表示*前面的字符个数为0个---无穷个
        let reg7=/j*/;//表示*前面的字符个数为0个---无穷个
        console.log(reg6.test(str));    //true
        console.log(reg7.test(str));    //true
        
        let reg8=/s+/;//表示+前面的字符个数为1个---无穷个
        let reg9=/j+/;//表示+前面的字符个数为1个---无穷个
        console.log(reg8.test(str));    //false
        console.log(reg9.test(str));    //true
        
        let reg10=/s?/;//表示 ? 前面的字符个数为0个---1个
        let reg11=/^bdda?$/;//表示 ? 前面的字符个数为0个---1个
        let str3="bddaaaaaaaaa";
        console.log(reg10.test(str));    //true
        console.log(reg11.test(str3));    //false
        console.log(reg11.test("bdda"));  //true

        var r1 = /^(abc){3}$/;
        var r2 = /^a|b$/;
        var r3 = /^.$/;
        console.log(r1.test("abcabcabc"));//true
        console.log(r2.test("a"));//true
        console.log(r2.test("b"));//true
        console.log(r3.test("b"));//true
        console.log(r3.test("\n"));//false

2.常用正则表达式

// (1)匹配 16 进制颜色值
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;

// (2)匹配日期,如 yyyy-mm-dd 格式
var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;

// (3)匹配 qq 号
var regex = /^[1-9][0-9]{4,10}$/g;

// (4)手机号码正则
var regex = /^1[34578]\d{9}$/g;

// (5)用户名正则
var regex = /^[a-zA-Z\$][a-zA-Z0-9_\$]{4,16}$/;

详细资料可以参考:
《前端表单验证常用的 15 个 JS 正则表达式》
《JS 常用正则汇总》

3.正则表达式例题

        // 1.邮政编码:由6个数字构成,第一位不可以是0
        let reg1=/^[1-9]\d{5}$/;
        console.log(reg1.test("012345"));   //false
        console.log(reg1.test("12345"));   //false
        console.log(reg1.test("112345"));   //true

        // 2.手机号码:由13/15/17/18开头的11位数字
        let reg2=/^1[3578]\d{9}$/;
        console.log(reg2.test("25299442881"));  //false
        console.log(reg2.test("18280705152"));  //true

        // 3.QQ号:第一位不可以是0,位数在5-12位的数字构成
        let reg3=/^[1-9]\d{4,11}$/;

        // 4.检查是否是压缩文件:文件名由字母、数字、下划线构成,不可以以数字开头,后缀为.zip/rar/gz
        let reg4=/^[a-zA-Z_]\w*\.(zip|rar|gz)$/;
        console.log(reg4.test("a.zip"));  //true
        console.log(reg4.test("a.zp"));  //false
        console.log(reg4.test("abs1.rar"));  //true

        // 7.密码:字母、数字、下划线构成,6-20位
        let reg5=/^\w{6,20}$/;

        // 8.用户名:字母、数字、下划线构成,6-16位,不能以数字开头
        let reg6=/^[a-zA-Z_]\w{5,15}$/;
        console.log(reg6.test("1username"));//false
        console.log(reg6.test("username"));//true

        // !!!!!!!!!!  10.输入年龄:只能在18-40间
        let reg7=/^1[89]$|^[23][0-9]$|^40$/;
        console.log(reg7.test("40"));   //true
        console.log(reg7.test("20"));   //true
        console.log(reg7.test("19"));   //true
        console.log(reg7.test("16"));   //false

        // 11.身份证号码:15或18位,如果是15位则全部为数字,如果是18位,前17位为数字,第18位为数字或字母x,字母不区分大小写
        let reg8=/^\d{15}$|^\d{17}[\dxX]$/;


        // 12.中文名字:三个汉字、中间必须是小或晓【[\u4e00-\u9fa5]表示任意一个汉字】
        let reg9=/^[\u4e00-\u9fa5][小晓][\u4e00-\u9fa5]$/;
        console.log(reg9.test("王狗蛋"));   //false
        console.log(reg9.test("张大山"));   //false
        console.log(reg9.test("张小山"));   //true
        console.log(reg9.test("张晓山"));   //true
posted @ 2021-09-11 15:35  青柠i  阅读(183)  评论(0编辑  收藏  举报